{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 对公寓受欢迎程度分类\n",
    "\n",
    "Rental Listing Inquiries数据集是Kaggle平台上的一个分类竞赛任务，根据公寓的特征来预测其受欢迎程度（用户感兴趣程度分为高、中、低三类）。其中房屋的特征x共有14维，响应值y为用户对该公寓的感兴趣程度。用xgboost模型对公寓的受欢迎程度进行分类预测，用logloss作为评价标准。       \n",
    "数据集来源：https://www.kaggle.com/c/two-sigma-connect-rental-listing-inquiries 。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.  读取数据和分析数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.feature_selection import SelectFromModel\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取数据 \n",
    "\n",
    "dtrain = pd.read_csv('RentListingInquries_FE_train.csv')\n",
    "dtest = pd.read_csv('RentListingInquries_FE_test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看具体的数据\n",
    "\n",
    "dtrain.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2950</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>950.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3758</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>3300</td>\n",
       "      <td>1650.000000</td>\n",
       "      <td>1100.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>4900</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.0         1   2950      1475.000000     1475.000000        0.0   \n",
       "1        1.0         2   2850      1425.000000      950.000000       -1.0   \n",
       "2        1.0         1   3758      1879.000000     1879.000000        0.0   \n",
       "3        1.0         2   3300      1650.000000     1100.000000       -1.0   \n",
       "4        2.0         2   4900      1633.333333     1633.333333        0.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       2.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   24  ...         0     0      0    1       0      0   \n",
       "2       2.0  2016      6    3  ...         0     0      0    0       0      0   \n",
       "3       3.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "4       4.0  2016      4   12  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           1     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 227 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dtest.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集中是否有空缺值： False\n",
      "测试集中是否有空缺值： True\n"
     ]
    }
   ],
   "source": [
    "# 检查数据集中是否有缺失值\n",
    "\n",
    "print('训练集中是否有空缺值：',dtrain.isnull().any().any())\n",
    "print('测试集中是否有空缺值：',dtest.isnull().any().any())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试集中有缺失值，把缺失值补为0\n",
    "\n",
    "dtest =  dtest.fillna(0)\n",
    "dtest.isnull().any().any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgEAAAENCAYAAACWzLaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHPxJREFUeJzt3X+0nVV95/H3RxAFpfIrUCRAVCKCXSPS8GPGjqNSAigKq5UWpkIGqdEp/mrtUmxHmcGiaK1WpyMtSDQoCBSlIDJiijAKLUKwalVEgvxIBCEYfhSxCvqdP86OHC735j433HMu9573a62zznm+z37O/h5WFvlmP3vvJ1WFJEkaPU+a6QQkSdLMsAiQJGlEWQRIkjSiLAIkSRpRFgGSJI0oiwBJkkaURYAkSSPKIkCSpBFlESBJ0ojadKYTGLTtttuuFixYMNNpSJI0NNddd93dVTVvsnZzvghYsGABK1eunOk0JEkamiS3dmnn7QBJkkaURYAkSSPKIkCSpBFlESBJ0ogaShGQZPck3+h73Z/krUm2SbIiyY3tfevWPkk+mmRVkm8l2bvvu5a09jcmWTKM/CVJmouGUgRU1Q1VtVdV7QX8JvAgcAFwAnBZVS0ELmvHAIcAC9trKXAqQJJtgBOB/YB9gRPXFw6SJGlqZuJ2wAHATVV1K3AYsLzFlwOHt8+HAWdWz9XAVkl2BA4CVlTVuqq6B1gBHDzc9CVJmhtmogg4EvhM+7xDVd0B0N63b/GdgNV916xpsYnikiRpioZaBCTZDHgV8PeTNR0nVhuIj+1naZKVSVauXbt26olKkjQChr1j4CHA16vqznZ8Z5Idq+qONtx/V4uvAXbuu24+cHuLv2RM/IqxnVTVacBpAIsWLXpMkSBJc8Vrz33tTKegAVn2+8sG3sewbwccxSO3AgAuAtbP8F8CXNgXP6atEtgfuK/dLrgUWJxk6zYhcHGLSZKkKRraSECSLYADgdf3hU8BzktyHHAbcESLXwK8HFhFbyXBsQBVtS7Je4BrW7uTqmrdENKXJGnOGVoRUFUPAtuOif2Y3mqBsW0LOH6C71kGDH6MRJKkOc4dAyVJGlEWAZIkjSiLAEmSRpRFgCRJI8oiQJKkEWURIEnSiLIIkCRpRFkESJI0oiwCJEkaURYBkiSNKIsASZJGlEWAJEkjyiJAkqQRZREgSdKIsgiQJGlEWQRIkjSiLAIkSRpRFgGSJI0oiwBJkkaURYAkSSPKIkCSpBE1tCIgyVZJzk/yvSTXJ/mPSbZJsiLJje1969Y2ST6aZFWSbyXZu+97lrT2NyZZMqz8JUmaa4Y5EvAR4ItV9TzgBcD1wAnAZVW1ELisHQMcAixsr6XAqQBJtgFOBPYD9gVOXF84SJKkqRlKEZDk14AXA2cAVNXPq+pe4DBgeWu2HDi8fT4MOLN6rga2SrIjcBCwoqrWVdU9wArg4GH8BkmS5pqNKgKSbJ5ksylc8mxgLfCJJP+S5ONJngbsUFV3ALT37Vv7nYDVfdevabGJ4mPzW5pkZZKVa9eunUKakiSNjk5FQJIPJtm3fX4FsA64N8krO/azKbA3cGpVvRD4CY8M/Y/b5Tix2kD80YGq06pqUVUtmjdvXscUJUkaLV1HAv4A+Hb7/G7gNcCrgPd2vH4NsKaqvtaOz6dXFNzZhvlp73f1td+57/r5wO0biEuSpCnqWgRsUVUPJtkWeHZVfbaq/hHYtcvFVfUjYHWS3VvoAOC7wEXA+hn+S4AL2+eLgGPaKoH9gfva7YJLgcVJtm4TAhe3mCRJmqJNO7b7fpI/AHajNxmPJNsBP51CX28CzmpzCX4AHEuvCDkvyXHAbcARre0lwMuBVcCDrS1VtS7Je4BrW7uTqmrdFHKQJElN1yLgj+gt8XsIeG2LHQR8qWtHVfUNYNE4pw4Yp20Bx0/wPcuAZV37lSRJ4+tUBFTVtcB/GhM7CzhrEElJkqTB67xEMMmBSc5I8vl2vCjJywaXmiRJGqSuSwTfRG/XvhvpbfoDvfkAfzGgvCRJ0oB1HQl4K/DbVXUK8MsW+x6w+8SXSJKkJ7KuRcCWPLJT3/rNeZ4M/HzaM5IkSUPRtQj4Co/d4e/NwOXTm44kSRqWrksE3wR8PsnrgC2T3ADcD3TdNliSJD3BdF0ieEeSfYB96O0SuBq4pqp+ueErJUnSE1WnIiDJXsCPq+oa4JoW2znJNlX1zUEmKEmSBqPrnIBP05sI2G8z4FPTm44kSRqWrkXALlX1g/5AVd0ELJj2jCRJ0lB0LQLWJNm7P9COfYyvJEmzVNfVAR8GLkzyAeAm4DnAnwInDyoxSZI0WF1XB5ye5F7gOGBneqsD3lZV5w8yOUmSNDhdRwKoqr8H/n6AuUiSpCHqXAQkWQzsBTy9P15V757upCRJ0uB13Sfgb4Dfo7dN8IN9p2r8KyRJ0hNd15GAo4C9qmr1pC0lSdKs0HWJ4I+BeweZiCRJGq6uIwF/BZyV5H3Anf0nxm4iJEmSZoeuRcCp7f3QMfECNpm+dCRJ0rB0uh1QVU+a4NW5AEhyS5J/TfKNJCtbbJskK5Lc2N63bvEk+WiSVUm+1b9bYZIlrf2NSZZM9QdLkqSernMCgF89OXD/x9HfS6tqr6pa1I5PAC6rqoXAZe0Y4BBgYXstpY1EJNkGOBHYD9gXOHF94SBJkqamUxGQZJckVwHfA/6xxV6d5OOPs//DgOXt83Lg8L74mdVzNbBVkh2Bg4AVVbWuqu4BVgAHP84cJEkaSV1HAv4O+AKwJfBQi60ADpxCXwV8Kcl1SZa22A5VdQdAe9++xXeitzXxemtabKL4oyRZmmRlkpVr166dQoqSJI2OrhMD9wVeUVW/TFIAVXVfkmdMoa8XVdXtSbYHViT53gbaZpxYbSD+6EDVacBpAIsWLXJDI0mSxtF1JOBOYLf+QJI9gdu6dlRVt7f3u4AL6BUWd7Zhftr7Xa35GnoPKlpvPr3HFk8UlyRJU9S1CPggcHGSY4FNkxwFnAu8v8vFSZ6WZMv1n4HFwLeBi4D1M/yXABe2zxcBx7RVAvsD97XbBZcCi5Ns3SYELm4xSZI0RV0fJbwsyTp6M/VXA8cA76qqf+jYzw7ABUnW93l2VX0xybXAeUmOozeqcERrfwnwcmAVvWcVHNvyWJfkPcC1rd1JVbWuYw6SJKnPpEVAkk3oLcs7eQp/6T9K21XwBePEfwwcME68gOMn+K5lwLKNyUOSJD1i0tsBVfULen8hPzRZW0mSNHt0nROwHHjDIBORJEnDNZUlgm9K8nZ6cwJ+teyuql48iMQkSdJgdS0CTm8vSZI0R3SdGPgcehMDfzb4lCRJ0jA4MVCSpBHlxEBJkkaUEwMlSRpRTgyUJGlEdd02ePmgE5EkScPVqQhI8tqJzrVtfCVJ0izT9XbA0WOOf53essGrcB9/SZJmpa63A146NtZGB/aY9owkSdJQdF0iOJ5PAsdNUx6SJGnIus4JGFssbAG8Brh32jOSJElD0XVOwMP07Q3Q/BBYOr3pSJKkYelaBDxrzPFPquru6U5GkiQNz1RGAh6sqnvWB5JsDWxeVbcPJDNJkjRQXScG/gMwf0xsPnDB9KYjSZKGpWsRsHtV/Wt/oB0/b/pTkiRJw9C1CLgryW79gXb846l0lmSTJP+S5OJ2/KwkX0tyY5Jzk2zW4k9px6va+QV93/HOFr8hyUFT6V+SJD2iaxGwDPhskkOT7JnklcD5wMen2N9bgOv7jt8PfLiqFgL38Mi+A8cB91TVbsCHWzuS7AkcCTwfOBj4WJJNppiDJEmiexFwCvBp4IPAtcAH2vEpXTtKMh94Ba1wSBLgZfSKCYDlwOHt82HtmHb+gNb+MOCcqvpZVd0MrKL3mGNJkjRFXbcN/iXwl+21sf4aeDuwZTveFri3qh5ux2uAndrnnYDVre+Hk9zX2u8EXN33nf3XSJKkKeg0EpDkhCT7jIntm+TtHa8/FLirqq7rD4/TtCY5t6Fr+vtbmmRlkpVr167tkqIkSSOn6+2AtwDfHRP7LvDWjte/CHhVkluAc+jdBvhrYKsk60cj5gPr9xxYA+wM0M4/A1jXHx/nml+pqtOqalFVLZo3b17HFCVJGi1di4DNgIfGxH4OPLXLxVX1zqqaX1UL6E3s+3JV/QFwOfDq1mwJcGH7fFE7pp3/clVVix/ZVg88C1gIXNPxN0iSpD5di4DrgD8aE3sD8PXH2f87gD9JsorePf8zWvwMYNsW/xPgBICq+g5wHr1RiC8Cx1fVLx5nDpIkjaSu2wb/MbAiydHATcBuwA7AgVPtsKquAK5on3/AOLP7q+rfgSMmuP5k4OSp9itJkh6t6+qA7yR5LnAovXvynwMurqoHBpmcJEkanK4jAQA7ArcC11XVjQPKR5IkDcmkcwKS/E6b1X8DcBXwvSS3JHn1hq+UJElPZBssApK8AvgE8DHg2cDmwHOAU4GPt/X/kiRpFprsdsC7gNdX1Tl9sVuA9ye5rZ2/eEC5SZKkAZrsdsDzgQsmOPc5YM/pTUeSJA3LZEXAz4Bfm+DcVvQ2DJIkSbPQZEXAF4H3TXDuvcCl05uOJEkalsnmBLwDuDLJt4DPAnfQWyr4u/RGCH5rsOlJkqRB2WARUFU/TLI3va17Dwa2A+6mt8f/h6tq3eBTlCRJgzDpZkFVdQ+9VQDvGnw6kiRpWLo+QEiSJM0xFgGSJI0oiwBJkkbUhEVAkqv7Pp84nHQkSdKwbGgk4LlJnto+v20YyUiSpOHZ0OqAC4HvtycIbp7kK+M1qqoXDyIxSZI0WBMWAVV1bJLfAhYA+wBnDCspSZI0eJNtFnQlvR0DN6uq5UPKSZIkDcGkmwUBVNWyJC8FjgZ2An4IfLqqvjzI5CRJ0uB0WiKY5A+Bc4Ef0XuE8B3A2UleN8DcJEnSAHXdJ+DtwIFV9WdV9XdV9efA4hafVJKnJrkmyTeTfCfJ/2rxZyX5WpIbk5ybZLMWf0o7XtXOL+j7rne2+A1JDprKj5UkSY/oWgRsC3x3TOwGYJuO1/8MeFlVvQDYCzg4yf7A++k9iGghcA9wXGt/HHBPVe0GfLi1I8mewJHA8+k90OhjSTbpmIMkSerTtQi4EvhQki0AkjwN+Evgn7pcXD0PtMMnt1cBLwPOb/HlwOHt82HtmHb+gCRp8XOq6mdVdTOwCti342+QJEl9uhYBbwD+A3BfkjuBe4EXAK/v2lGSTZJ8A7gLWAHcBNxbVQ+3JmvoTTqkva8GaOfvozca8av4ONdIkqQp6Lo64A7gvySZDzwTuL2q1kylo6r6BbBXkq2AC4A9xmvW3jPBuYnij5JkKbAUYJdddplKmpIkjYwpPUCoqtZU1TVTLQDGfMe9wBXA/sBWSdYXIvOB29vnNcDOAO38M4B1/fFxrunv47SqWlRVi+bNm7exqUqSNKcN5SmCSea1EQCSbA78NnA9cDnw6tZsCb2tigEuase081+uqmrxI9vqgWcBC4FrhvEbJEmaazrdDpgGOwLL20z+JwHnVdXFSb4LnJPkL4B/4ZGtic8APpVkFb0RgCMBquo7Sc6jt1LhYeD4dptBkiRN0aRFQJInAS8Brqyqn29MJ1X1LeCF48R/wDiz+6vq34EjJviuk4GTNyYPSZL0iElvB1TVL4ELN7YAkCRJT0xd5wR8pW3uI0mS5oiucwJuBf5vkgvprdP/1bK8qnr3IBKTJEmD1bUI2Bz4h/Z5/oBykSRJQ9R1s6BjB52IJEkars5LBJPsQW/N/g5V9cYkuwNPaTP/JUnSLNNpYmCSI4Cv0Nun/5gW3hL40IDykiRJA9Z1dcBJwIFV9QZg/eY836T3ECFJkjQLdS0Ctqf3lz48sjKgGOfhPZIkaXboWgRcBxw9JnYk7tsvSdKs1XVi4JuBLyU5DnhakkuB5wKLB5aZJEkaqK5LBL+X5HnAocDF9DYMuriqHhhkcpIkaXA6LxGsqgeTXAXcDNxuASBJ0uzWdYngLkm+CtwCfAG4JcmVSXYdZHKSJGlwuk4MXE5vcuBWVbU9sDVwbYtLkqRZqOvtgN8EFlfVQwBV9UCSdwA/HlhmkiRpoLoWAVcD+wJX9cUWAf887RlJc9iPTv/9mU5BA/Lrrzt3plOQpmzCIiDJSX2HNwGXJPkCvZUBOwMvB84ebHqSJGlQNjQSsPOY48+19+2BnwEXAE8dRFKSJGnwJiwCfHywJElz21QeJbwFsBvw9P54Vf3TdCclSZIGr+s+AccAPwK+DJzb9zqn4/U7J7k8yfVJvpPkLS2+TZIVSW5s71u3eJJ8NMmqJN9Ksnffdy1p7W9MsmRqP1eSJK3XdZ+ADwC/W1XbVdXOfa9dOl7/MPC2qtoD2B84PsmewAnAZVW1ELisHQMcAixsr6XAqdArGoATgf3orVY4cX3hIEmSpqZrEfBz4IqN7aSq7qiqr7fP/wZcD+wEHMYjGw4tBw5vnw8Dzqyeq4GtkuwIHASsqKp1VXUPsAI4eGPzkiRplHUtAt4FfCjJdo+3wyQLgBcCXwN2qKo7oFco0Ft5AL0CYXXfZWtabKL42D6WJlmZZOXatWsfb8qSJM1JXYuA7wOvAu5M8ov2+mWSX0ylsyRPBz4LvLWq7t9Q03FitYH4owNVp1XVoqpaNG/evKmkKEnSyOi6OuBTwJn0JgP+dGM6SvJkegXAWVW1fs+BO5PsWFV3tOH+u1p8DY/ep2A+cHuLv2RM/IqNyUeSpFHXdSRgW+DdVfXtqrqp/9Xl4iQBzgCur6oP9Z26CFg/w38JcGFf/Ji2SmB/4L52u+BSYHGSrduEwMUtJkmSpqjrSMAngKPpjQZsjBe16/81yTda7M+AU4DzkhwH3AYc0c5dQm9b4lXAg8CxAFW1Lsl76D3BEOCkqlq3kTlJkjTSuhYB+wJvTPLnwJ39J6rqxZNdXFVXMv79fIADxmlfwPETfNcyYNlkfUqSpA3rWgSc3l6SJGmO6FQEVNXyyVtJkqTZpFMRkOS1E51rw/OSJGmW6Xo74Ogxx78OPAe4Cu/PS5I0K3W9HfDSsbE2OrDHtGckSZKGous+AeP5JHDcNOUhSZKGrOucgLHFwhbAa4B7pz0jSZI0FF3nBDzMY/fo/yHwuulNR5IkDUvXIuBZY45/UlV3T3cykiRpeLpODLx10IlIkqTh2mARkORyxnlUb5+qqsds+ytJkp74JhsJ+PQE8Z2AN9ObIChJkmahDRYBVXVG/3GSbYF30psQeC5w0uBSkyRJg9Rpn4Akv9Ye4bsK2AHYu6qWVtWagWYnSZIGZoNFQJLNk7wT+AG93QF/q6qOrqqbhpKdJEkamMnmBNwMbAJ8AFgJ7JBkh/4GVfXlAeUmSZIGaLIi4N/prQ747xOcL+DZ05qRJEkaiskmBi4YUh6SJGnIHs8DhCRJ0ixmESBJ0ogaShGQZFmSu5J8uy+2TZIVSW5s71u3eJJ8NMmqJN9KsnffNUta+xuTLBlG7pIkzVXDGgn4JHDwmNgJwGVVtRC4rB0DHAIsbK+lwKnQKxqAE4H9gH2BE9cXDpIkaeqGUgRU1VeAdWPChwHL2+flwOF98TOr52pgqyQ7AgcBK6pqXVXdA6zgsYWFJEnqaCbnBOxQVXcAtPftW3wnYHVfuzUtNlFckiRthCfixMCME6sNxB/7BcnSJCuTrFy7du20JidJ0lwxk0XAnW2Yn/Z+V4uvAXbuazcfuH0D8ceoqtOqalFVLZo3b960Jy5J0lwwk0XARcD6Gf5LgAv74se0VQL7A/e12wWXAouTbN0mBC5uMUmStBEm2zZ4WiT5DPASYLska+jN8j8FOC/JccBtwBGt+SXAy+k9sfBB4FiAqlrXnmR4bWt3UlWNnWwoSZI6GkoRUFVHTXDqgHHaFnD8BN+zDFg2jalJkjSynogTAyVJ0hBYBEiSNKKGcjtgtnrNR74w0yloQD79llfMdAqSNOMcCZAkaURZBEiSNKIsAiRJGlEWAZIkjSiLAEmSRpRFgCRJI8oiQJKkEWURIEnSiLIIkCRpRFkESJI0oiwCJEkaURYBkiSNKIsASZJGlEWAJEkjyiJAkqQRZREgSdKIsgiQJGlEWQRIkjSiZmURkOTgJDckWZXkhJnOR5Kk2WjWFQFJNgH+D3AIsCdwVJI9ZzYrSZJmn1lXBAD7Aquq6gdV9XPgHOCwGc5JkqRZZzYWATsBq/uO17SYJEmaglTVTOcwJUmOAA6qqj9sx0cD+1bVm/raLAWWtsPdgRuGnujstB1w90wnoTnFP1OaTv556m7Xqpo3WaNNh5HJNFsD7Nx3PB+4vb9BVZ0GnDbMpOaCJCuratFM56G5wz9Tmk7+eZp+s/F2wLXAwiTPSrIZcCRw0QznJEnSrDPrRgKq6uEkbwQuBTYBllXVd2Y4LUmSZp1ZVwQAVNUlwCUznccc5C0UTTf/TGk6+edpms26iYGSJGl6zMY5AZIkaRpYBMhtmDWtkixLcleSb890Lpobkuyc5PIk1yf5TpK3zHROc4W3A0Zc24b5+8CB9JZfXgscVVXfndHENGsleTHwAHBmVf3GTOej2S/JjsCOVfX1JFsC1wGH+/+px8+RALkNs6ZVVX0FWDfTeWjuqKo7qurr7fO/AdfjTrHTwiJAbsMsadZIsgB4IfC1mc1kbrAIUMaJeY9I0hNOkqcDnwXeWlX3z3Q+c4FFgCbdhlmSZlqSJ9MrAM6qqs/NdD5zhUWA3IZZ0hNakgBnANdX1YdmOp+5xCJgxFXVw8D6bZivB85zG2Y9Hkk+A/wzsHuSNUmOm+mcNOu9CDgaeFmSb7TXy2c6qbnAJYKSJI0oRwIkSRpRFgGSJI0oiwBJkkaURYAkSSPKIkCSpBFlESDpCSHJS5KsGUI/lWS3QfcjzQYWAdIsl+SWJL/dse0VSf5w0DlN0HfnPCUNh0WApM7ao6clzREWAdIckuS/JbkyyQeT3JPk5iSHtHMnA/8Z+JskDyT5mxZ/XpIVSdYluSHJ7/V93yeTnJrkkiQ/AV6a5Cnt+29LcmeSv02yeWu/XZKLk9zbvu+rSZ6U5FPALsDnW99v7/Bbnpnks0nWtt/x5r74T5Ns09f2hUnubvvLk+S1Sa5v/w0uTbLrtP1HluYQiwBp7tkPuAHYDvgAcEaSVNWfA18F3lhVT6+qNyZ5GrACOBvYHjgK+FiS5/d9338FTga2BK4E3g88F9gL2I3eo6ff3dq+jd5DqeYBOwB/BlRVHQ3cBryy9f2BDf2AJE8CPg98s33/AcBbkxxUVbfT25b4d8fkeH5VPZTk8Nbv77Q8vgp8pvN/PWmEWARIc8+tVXV6Vf0CWA7sSO8v5PEcCtxSVZ+oqoer6uv0ntT26r42F1bVVVX1S+BnwOuAP66qdVX1b8B76T14CuCh1t+uVfVQVX21Nm5v8n2AeVV1UlX9vKp+AJze18/Z9AqW9Q+XObLFAF4PvK+qrm/PxngvsJejAdJjbTrTCUiadj9a/6GqHuz9HcnTJ2i7K7Bfknv7YpsCn+o7Xt33eR6wBXBd+16AAOvnCvwl8D+BL7Xzp1XVKRvxG3YFnjkmr03o/ase4Hzgfyd5JrAQqL5zuwIfSfJXfdeG3ojCrRuRizRnWQRIo2Xsv8pXA/+vqg7seM3dwE+B51fVDx/TsDcy8Dbgbe2WwuVJrq2qy8bpe0NWAzdX1cJxE6q6N8mXgN8D9gA+0zfisBo4uarOmkJ/0kjydoA0Wu4Ent13fDHw3CRHJ3lye+2TZI/xLm63BE4HPpxke4AkOyU5qH0+NMlubYj+fuAX7TVe3xtyDXB/knck2TzJJkl+I8k+fW3OBo6hNzfg7L743wLvXD+vIckzkhzRsV9ppFgESKPlI8Cr26z5j7Z/uS+md0/9dnq3Et4PPGUD3/EOYBVwdZL7gX8Edm/nFrbjB+hN3vtYVV3Rzr0P+B9t5cCfbijJNp/hlfQmH95MbwTi48Az+ppd1Pq7s6q+2XftBe03nNPy+zZwyIb6k0ZVNm7OjiRJmu0cCZAkaURZBEiSNKIsAiRJGlEWAZIkjSiLAEmSRpRFgCRJI8oiQJKkEWURIEnSiLIIkCRpRP1/LrJx1RJV0Y8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb143588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看训练集中的类别标签 interest_level \n",
    "\n",
    "count_level = dtrain['interest_level'].value_counts() \n",
    "\n",
    "plt.figure(figsize=(8,4))\n",
    "sns.barplot(count_level.index,count_level.values,alpha=0.8)\n",
    "plt.ylabel('Number of Occurrences',fontsize=12)\n",
    "plt.xlabel('Interest level',fontsize=12)\n",
    "plt.show()\n",
    "\n",
    "# 有三个类别特征，分布不均衡。类别标签2的分布最大。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把训练集数据分割为输入特征和类别标签\n",
    "\n",
    "y_train = dtrain['interest_level']\n",
    "X_train = dtrain.drop('interest_level',axis=1)\n",
    "\n",
    "# 测试集数据没有类别标签\n",
    "X_test = dtest\n",
    "\n",
    "# 决策树、xgboost主要处理特征的分布和特征之间的条件概率，不需要对输入特征做归一化处理，因此后面直接用原始数据进行分类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "--------------------------------------------------------------------------------\n",
    "# 2.  用默认的xgboost进行分类 (default xgboost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC of default xgboost:  0.6890133605692628\n"
     ]
    }
   ],
   "source": [
    "from xgboost import XGBClassifier\n",
    "\n",
    "model_XGB = XGBClassifier()\n",
    "model_XGB.fit(X_train,y_train)\n",
    "\n",
    "# 用类别标签中概率最大的类别标签2，对训练集检验分类准确率 (测试集没有类别标签，无法检验)\n",
    "y_prob = model_XGB.predict_proba(X_train)[:,2]                                               \n",
    "y_pred = np.where(y_prob > 0.5, 1, 0)       \n",
    "\n",
    "# 把训练集的类别标签转化为二分类，方便与预测值比较\n",
    "y_train_2 = np.zeros((len(y_train),1))\n",
    "for i in range(len(y_train)):\n",
    "    if y_train[i] != 2:\n",
    "        y_train_2[i] = 0\n",
    "    else:\n",
    "        y_train_2[i] = 1\n",
    "        \n",
    "print('AUC of default xgboost: ',roc_auc_score(y_train_2,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "重要性不为0的特征个数： 71\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>price_bedrooms</td>\n",
       "      <td>0.148204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>price</td>\n",
       "      <td>0.124251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>hour</td>\n",
       "      <td>0.080838</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>distance</td>\n",
       "      <td>0.076846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>price_bathrooms</td>\n",
       "      <td>0.073852</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>cenroid</td>\n",
       "      <td>0.064371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>fee</td>\n",
       "      <td>0.047904</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>display_address_pred_2</td>\n",
       "      <td>0.038423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Day</td>\n",
       "      <td>0.027944</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Yday</td>\n",
       "      <td>0.023952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>furnished</td>\n",
       "      <td>0.021956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>184</th>\n",
       "      <td>simplex</td>\n",
       "      <td>0.019960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>display_address_pred_0</td>\n",
       "      <td>0.019461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101</th>\n",
       "      <td>floors</td>\n",
       "      <td>0.015968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>128</th>\n",
       "      <td>laundry</td>\n",
       "      <td>0.013972</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>room_diff</td>\n",
       "      <td>0.011976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>display_address_pred_1</td>\n",
       "      <td>0.011477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>164</th>\n",
       "      <td>private</td>\n",
       "      <td>0.010479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>bedrooms</td>\n",
       "      <td>0.009980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>188</th>\n",
       "      <td>space</td>\n",
       "      <td>0.009481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    columns  importance\n",
       "4            price_bedrooms    0.148204\n",
       "2                     price    0.124251\n",
       "12                     hour    0.080838\n",
       "23                 distance    0.076846\n",
       "3           price_bathrooms    0.073852\n",
       "22                  cenroid    0.064371\n",
       "96                      fee    0.047904\n",
       "26   display_address_pred_2    0.038423\n",
       "9                       Day    0.027944\n",
       "11                     Yday    0.023952\n",
       "106               furnished    0.021956\n",
       "184                 simplex    0.019960\n",
       "24   display_address_pred_0    0.019461\n",
       "101                  floors    0.015968\n",
       "128                 laundry    0.013972\n",
       "5                 room_diff    0.011976\n",
       "25   display_address_pred_1    0.011477\n",
       "164                 private    0.010479\n",
       "1                  bedrooms    0.009980\n",
       "188                   space    0.009481"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看特征重要性\n",
    "\n",
    "columns = X_train.columns\n",
    "df = pd.DataFrame({\"columns\":list(columns), \"importance\":list(model_XGB.feature_importances_.T)})\n",
    "print('重要性不为0的特征个数：', (df['importance']!=0).sum())\n",
    "\n",
    "df.sort_values(by=['importance'],ascending=False)[:20]\n",
    "\n",
    "# 有71个特征的重要性不为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAEWCAYAAABL4c8hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsnXuc1dP6x99Pje4pdNFFJXTRRemCo8OEQojCkZNDF+d3ck7IrToiCaeLEOWEOipFcq2EiGZXJ4Upo1KKU5OJqNBlutc8vz/Wd0979uw9M02zZ1/meb9e39de3/Vd37WeZw89e90+S1QVwzAMwzBin1LRNsAwDMMwjIJhQdswDMMw4gQL2oZhGIYRJ1jQNgzDMIw4wYK2YRiGYcQJFrQNwzAMI06woG0YRkIgIi+IyMPRtsMwIonYPm3DKNmISDpQEzgSkN1IVX86jjqTgemqWvf4rItPRGQKsFlVH4q2LUZiYT1twzAArlHVSgFXoQN2USAiSdFs/3gQkdLRtsFIXCxoG4YRFhE5X0Q+E5EdIvK114P2P+stImtFZLeIbBCRv3n5FYEPgdoikuldtUVkiog8HvB+sohsDrhPF5FBIrIS2CMiSd57b4vINhHZKCJ35WFrdv3+ukVkoIhsFZEtInKdiHQRkfUi8puIPBjw7jAReUtEZnr+rBCRcwKeNxURn/c9fCMiXYPanSAiH4jIHqAv0BMY6Pn+nldusIj8z6t/jYh0C6ijl4j8V0TGiMjvnq9XBjw/WUQmi8hP3vNZAc+uFpE0z7bPRKRlgf/ARtxhQdswjJCISB3gfeBx4GTgfuBtEanuFdkKXA2cCPQGnhGRc1V1D3Al8FMheu43A1cBVYEs4D3ga6AOcCkwQEQuL2BdpwLlvHeHAhOBW4A2wB+BoSLSMKD8tcCbnq+vAbNE5AQROcGz42OgBnAn8KqINA5498/AE0Bl4BXgVWC05/s1Xpn/ee1WAR4FpotIrYA6zgPWAdWA0cB/RES8Z9OACkAzz4ZnAETkXOBl4G/AKcCLwBwRKVvA78iIMyxoG4YBLkDt8C5/L+4W4ANV/UBVs1R1PpAKdAFQ1fdV9X/qWIgLan88TjueU9UMVd0HtAOqq+pwVT2oqhtwgbdHAes6BDyhqoeA13HB8FlV3a2q3wDfAIG90uWq+pZX/mlcwD/fuyoBIz07FgBzcT8w/MxW1SXe97Q/lDGq+qaq/uSVmQl8B7QPKLJJVSeq6hFgKlALqOkF9iuBfqr6u6oe8r5vgL8CL6rq56p6RFWnAgc8m40EJG7njQzDKFKuU9VPgvLqAzeKyDUBeScAKQDe8O0jQCNcB6ACsOo47cgIar+2iOwIyCsNLC5gXb96ARBgn/f5S8DzfbhgnKttVc3yhu5r+5+palZA2U24Hnwou0MiIrcC9wINvKxKuB8Sfn4OaH+v18muhOv5/6aqv4eotj5wm4jcGZBXJsBuI8GwoG0YRjgygGmq+tfgB97w69vArbhe5iGvh+4fzg21LWUPLrD7OTVEmcD3MoCNqnpWYYwvBKf5EyJSCqgL+If1TxORUgGBux6wPuDdYH9z3ItIfdwowaXAUlU9IiJpHP2+8iIDOFlEqqrqjhDPnlDVJwpQj5EA2PC4YRjhmA5cIyKXi0hpESnnLfCqi+vNlQW2AYe9XnfngHd/AU4RkSoBeWlAF29R1anAgHza/wLY5S1OK+/Z0FxE2hWZhzlpIyLdvZXrA3DDzMuAz3E/OAZ6c9zJwDW4Ifdw/AIEzpdXxAXybeAW8QHNC2KUqm7BLez7t4ic5Nlwkfd4ItBPRM4TR0URuUpEKhfQZyPOsKBtGEZIVDUDtzjrQVywyQAeAEqp6m7gLuAN4HfcQqw5Ae9+C8wANnjz5LVxi6m+BtJx898z82n/CC44tgI2AtuBSbiFXJFgNnATzp+/AN29+eODQFfcvPJ24N/ArZ6P4fgPcLZ/jYCqrgGeApbiAnoLYMkx2PYX3Bz9t7gFgAMAVDUVN6893rP7e6DXMdRrxBkmrmIYRolHRIYBZ6rqLdG2xTDywnrahmEYhhEnWNA2DMMwjDjBhscNwzAMI06wnrZhGIZhxAm2T9soUqpWrapnnnlmtM0oEvbs2UPFihWjbUaRYL7ELonkj/lSeJYvX75dVavnV86CtlGk1KxZk9TU1GibUST4fD6Sk5OjbUaRYL7ELonkj/lSeERkU0HK2fC4YRiGYcQJFrQNwzAMI06woG0YhmEYcYIFbcMwDMOIEyxoG4ZhGEacYEHbMAzDMALIyMjgnnvuoWnTpjRr1oxnn30WgK+//poLLriAFi1acM0117Br1y4AXn31VVq1apV9lSpVirS0tIjYZkE7H0RkuIhcVkR1JYvI3Gi9bxiGYeRPUlISd9xxB2vXrmXZsmU8//zzrFmzhttvv52RI0eyatUqunXrxpNPPglAz549SUtLIy0tjWnTptGgQQNatWoVEdssaOeBiJRW1aGq+km0bckL7/xfwzAMowioVasWjRo1AqBy5co0bdqUH3/8kXXr1nHRRe4o806dOvH222/nenfGjBncfPPNEbOtxP5jLyINgHm4A+5bA+uBW4E1wMtAZ2C8iFwBzFXVt0SkHfAs7kD7A8ClwF5gJJAMlAWeV9UX82j6RBF5F2gMLAL+rqpZItIZeNSr439Ab1XN9NofizvHd0WA/cOA2kADYLuI9AEmAG2Bw8C9qpoiIuXC5PcCrgNKA81xZ/2WwZ3bewDooqq/ichdQD/v3TWq2iOv73XfoSM0GPx+XkXihvtaHKaX+RJzJJIvkFj+xLsv6SOvyp2Xns5XX33FeeedR/PmzZkzZw7XXnstb775JhkZGbnKz5w5k9mzZ0fMxhIbtD0aA31VdYmIvAz83cvfr6odALygiYiUAWYCN6nqlyJyIrAP6AvsVNV2IlIWWCIiH6vqxjBttgfOBjbhfjR0FxEf8BBwmaruEZFBwL0iMhqYCFyCO9x+ZlBdbYAOqrpPRO4DUNUWItIE+FhEGgH/CJMPLli3Bsp59Q9S1dYi8gzuB8xYYDBwuqoeEJGqoRwSkf8D/g+gWrXqDG1xOOwXHk/ULO/+EUoEzJfYJZH8iXdffD5fdjozM5MPP/yQu+++m9tvv50VK1bQr18/Hn/8cR544AEuvPBCSpUqleOdNWvWoKps3749R36Roqol8sL1UH8IuL8EmAWkA/UD8qcANwAtgCUh6nkL10tP866NQOcwbSYDiwLu++AC49W4nrS/jjXAf4BWQeW74nr9AMOARwKevQtcEnC/GGiZR34vYGJA/g9AnUC7vPQ8z8dbgEr5fa+NGjXSRCElJSXaJhQZ5kvskkj+JJIv8+fP186dO+tTTz0V8vm6deu0Xbt2OfIGDBigTzzxRKHaA1K1ALGrpPe0g88l9d/vCVFWQpT359+pqh8dR5sCzFfVHBMhItIqTJt+Au2UMGXC5YMbBveTFXCfxdFRmKuAi3A/GB4WkWaqGr8/pQ3DMPJBVRk9ejRnn3029957b3b+1q1bqVGjBllZWTz++OP069cv+1lWVhZvvvkmixYtiqhtJX0hWj0RucBL3wz8N4+y3wK1vXltRKSytwDsI+AOETnBy28kInkdDdNeRE4XkVLATV6by4ALReRMr44K3hD2t8DpInJGgI3hWAT09NsA1APW5ZGfL56Np6lqCjAQqApUKsi7hmEY8cqSJUuYP38+CxYsyN7G9cEHHzBjxgwaNWpEkyZNqF27Nr17985+Z9GiRdStW5eGDRtG1LaS3tNeC9wmIi8C3+EWbN0ZqqCqHhSRm4BxIlIeN599GTAJN9S+QkQE2IZb4BWOpbiFay1wAfVddQvRegEzvHlxgIdUdb03X/y+iGzHBfjmYer9N/CCiKzCLRrrpW4eOlx+vl8ObpHadBGpguuxP6OqOwryomEYRrzSoUMHUlJSQp7ydffdd4d8Jzk5mWXLlkXYMgvaWaraLyivQeCNqvYKSH8JnB+inge9K09U1Qf4wjxbALQLkT8PaBIif1jQ/X7cPHVwuXD5U3Dz9f77BmGedQhlr2EYhlH8lPThccMwDKMIycjIoGPHjrnUxPyMGTMGEWH79u0A/P7773Tr1o2WLVvSvn17Vq9eHQ2z44YSG7RVNV1Vww01Hxci0kJE0oKuzyPR1vFQlGpvhmEY4NTEnnrqqVxqYuAC+vz586lXr152+X/961+0atWKlStX8sorr4QdfjYcJTZoRxJVXaWqrYKu86JtVyDxovZmGEZ8UatWLc4991wgp5oYwD333MPo0aMJXFOzZs0aLr30UgCaNGlCeno6v/zyS/EbHieU9DnthCSKam+miBajmC+xS6L4k5+a2Jw5c6hTpw7nnHNOjjLnnHMO77zzDh06dOCLL75g06ZNbN68mZo1axaX6XGFBe3EpdjU3kwRLfYxX2KXRPHH5/ORmZmZrQS2b9++bDWxzz77jEGDBvHkk0/i8/nYv38/S5YsoUqVKlx44YWMHz+eM888k4YNG3LmmWfy1VdfsXv37qj6E+hLTFEQBRa74usiCmpv/ssU0WIT8yV2SSR//L4cPHgwh5rYypUrtXr16lq/fn2tX7++li5dWk877TTdsmVLjvezsrK0fv36unPnzuI2PRfF/XfBFNFKPNFQezMMo4SjqvTt25emTZtmq4m1aNGCrVu3Zpdp0KABqampVKtWjR07dlChQgXKlCnDpEmTuOiiizjxxBOjZX7MYwvREpdoqL0ZhlHCWbJkCdOmTculJhaOtWvX0qxZM5o0acKHH36Ya4uYkRPraScu0VB7MwyjhNOhQwf/9FpY0tPTs9MXXHAB3333XYStShwsaCcuxar2ZhiGYUQeGx43DKPE0KdPH2rUqEHz5jl1lcaNG0fjxo1p1qwZAwcOBGD+/Pm0adOGFi1a0KZNGxYsWBANkw0jB9bTTkBUNR1o7u3XnqsRUn4zjHijV69e9O/fn1tvvTU7LyUlhdmzZ7Ny5UrKli2bvWCqWrVqvPfee9SuXZvVq1dz+eWXZ4uEGEa0sKBtHBMikqR2nrYRp1x00UU55lMBJkyYwODBgylb1h2wV6NGDQBat26dXaZZs2bs37+fAwcOZJczjGhgQTvxKS0iE4E/AD8C1+KEV14AKgD/A/qo6u8i4gPuV9VUEamG2zfYwDs29CqgHE4x7ZJwjZkiWmxS0n0JpdblZ/369SxevJghQ4ZQrlw5xowZQ7t2OQ/ce/vtt2ndurUFbCPqWNBOfM4CblbVv4rIG8D1wEDc/uuFIjIceAQYkE89FwAtVfW34AemiBb7lHRfApWtfv75Z/bs2ZOdt3PnTlatWsXIkSP59ttv6dq1K6+99lq2PvbGjRt56KGHGD16dEQUsmJWeasQmC/FQEEUWOyKzwu3Wvy7gPtBuAAdqJZ2BrDCS/uAtl66GpDupXsBkwvSpimixSbmy1E2btyozZo1y76//PLLc9TZsGFD3bp1q6qqZmRk6FlnnaX//e9/j6vNvLC/TWwSq4potno88TkQkD4CVM2j7GGO7igoF/QslJKaYcQ91113XfbK8PXr13Pw4MFspa6rrrqKESNGcOGFF0bZSsNwWNAueewEfheRP3r3fwEWeul0oI2XvqGY7TKMiHPzzTdzwQUXsG7dOurWrct//vMf+vTpw4YNG2jevDk9evRg6tSpiAjjx4/n+++/57HHHstW9gqU4jSMaGBz2iWT24AXRKQCsAHo7eWPAd4Qkb8AtinVSDhmzJgRMn/69Om58h566CEeeuihSJtkGMeEBe0ERr392gH3YwIe51I/U9VvgZYBWQ95+VNwJ4IZhmEYUcSGxw3DMAwjTrCgbRhGwhBKpnTYsGHUqVMn7IlTP/zwA5UqVWLMmDHB1RlGzGFBO4YRkWEicr+IDBeRy/Iod52InF2cthlGLNKrVy/mzZuXK/+ee+4hLS2NtLQ0unTpkuvZlVdeWVwmGsZxYXPacYCqDs2nyHXAXGBNMZhjGDFLKJnSvJg1axYNGzakYkU7Jt6IDyxoxxgiMgS4FcjAnV+9XESm4A7+eEtERgJdcXuqPwbe8e4vFpGHcIpnl+AUysoA3wN/UdW9Xj27gLbAqcBAVX3La3cgbvtXFvChqg4WkTOA54HqwF7gr95itbCYjGlskui+5CVTCjB+/HheeeUV2rZty1NPPcVJJ53Enj17GDVqFPPnz7ehcSNuECfEYsQCItIGt0r7PNwPqhU4jfDmuJ70AmAp0ERVVUSqquqOwKDu1XOKqv7qpR8HflHVcV65isBNQBNgjqqeKSJXAg8Dl3nB/WRV/U1EPgX6qep3InIeMEJVc+mOB8mYthk6dmJkvqBipmZ5+GVftK0oGhLdlxZ1qmSnf/75Z/75z38yefJkAH777TeqVKmCiPDyyy/z66+/MmjQICZMmECTJk3o2LEjU6ZMoXz58tx0003F6Qrg5DIrVapU7O1GAvOl8HTs2HG5qrbNt2BBZNPsKjbZ0QHA8ID7p4H7cYH8Blwg/xr4D9AdKOOVmwLcEPDexcBiYBWwEXghoFzPgHK7vc+ncL3oQFsqAfuAtIBrbX4+mIxpbFKSfAmWKQ33rEOHDlq/fn2tX7++VqlSRU866SQdN25cUZubLyXpbxNPxKqMqQ2Pxx5hhz5U9bCItAcuBXoA/Ql94tYU4DpV/do7oSs54FmgrKkEfAa3WwrYoaqtjsV4w4g1tmzZQq1atQB49913s1eWL168OLvMsGHDqFSpEv3794+KjYZRUGz1eGyxCOgmIuVFpDJwTeBDEakEVFHVD3C9cn9A3Q1UDihaGdgiIicAPQvQ7sdAH08hDW94fBewUURu9PJERM45Dt8MI+KEkikdOHAgLVq0oGXLlqSkpPDMM89E20zDKDTW044hVHWFiMzEDUVvwg1xB1IZmC0i5XC943u8/NeBiSJyF24Y/WHgc6+OVeQM6KHanScirYBUETkIfAA8iAv4E7wFbid47Xx93I4aRoQIJVPat2/ffN8bNmxYBKwxjKLHgnaMoapPAE/kUaR9iHeWAIH7tCd4V3C5XkH3lQLSI4GRQc83AlcUxG7DMAwj8tjwuGEYcUco5TM/Y8aMQUTYvn07ADt37uSaa67hnHPOoVmzZtmryg0jHrGgbRhG3BFO+SwjI4P58+dTr1697Lznn3+es88+m6+//hqfz8d9993HwYMHi9NcwygyLGgHkZ9k6DHWlSwic4/xnQH+BWHefWZR2GIYicRFF13EySefnCv/nnvuYfTo0YhIdp6IsHv3blSVzMxMTj75ZJKSbGbQiE/sv9wARKS05i8ZGmkGANNxCmQFQkSSVPVw5EwqOKaIFpskgi/5qZ7NmTOHOnXqcM45OTc59O/fn65du1K7dm12797NzJkzKVXK+itGfFJigraINADm4VZVtwbW4+RC1wAvA52B8SJyBUclQ9sBz+JUxA7g9kfvxS3YSgbKAs+r6ot5NH2iiLwLNMZt6fq7qmaJyASgHVAeeEtVH/FWf9cGUkRku6p29Gx/ArgaJ3Zyrar+4qmb/eb5ssIr8zLQ0LPx/1R1pYicHCZ/GHA6UAtoBNyLO2P7SuBH4BpVPRQsm6qq94f4bgMV0RjaIiZ+Pxw3Ncu7YJcIJIIvPp8PcEpVPp+Pn3/+mT179uDz+di/fz+DBg3iySefzL5fsmQJVapUYeHChVSrVo3XXnuNn376idtvv51JkybFjN64359EwHwpBgqiwJIIF9AAJyByoXf/Mk5tLB2nwe0vNwW3baoMsAFo5+WfiPuR83/AQ15eWSAVOD1Mm8nAflzALA3Mx1MuA072PksDPqCld58OVAuoQ3EBFGB0QNtTcNKmpb37ccAjXvoSIC2f/GHAf3Fbuc7BBfQrvWfv4g4hORlYx1G526r5fc+miBabJKIvgepmK1eu1OrVq2crnJUuXVpPO+003bJli3bp0kUXLVqU/X7Hjh31888/j4bpIUnEv00iEKuKaCVtjChD3fYocEPQHbz0zBBlGwNbVPVLAFXdpW4IujNwq4ik4XrtpwBn5dHmF6q6QVWPADMC2vyTiKwAvgKakXPLViAHccEZYDnux4efN7168eqd5tm6ADhFRKrkkQ/uYJBDuL3cpXEjEXj3DXCHi+wHJolId45hyN4wipMWLVqwdetW0tPTSU9Pp27duqxYsYJTTz2VevXq8emnnwLwyy+/sG7dOho2bBhliw2jcJS0oB0s1em/3xOibChpT3/+narayrtOV9WPj6VNETkd18u/VFVbAu8D5cK8f8j7FQZwhJxTGoF2C7nRPPLBkzRV1aygdrIA/zx5e+BtXM8793Jdw4gCoZTPwvHwww/z2Wef0aJFCy699FJGjRpFtWrVitFawyg6Ssyctkc9EblAVZcCN+OGh1uHKfstUFtE2qnql56s6D7gI+AOEVmgbs63EfCjqoYK/ADtvSC9CXe61ku4ofY9wE4RqYmbR/Z55f2SpNuP0bdFOAWzx0QkGdiuqrtEJFx+vhV6sqkVVPUDEVmGO+bTMKJOKOWzQALP1K5duzYff5zX72rDiB9KWtBeC9wmIi8C3+FUw+4MVVBVD4rITcA4ESmPC9iXAZNwQ8crxEW+bbheaDiW4hautcAF1nfVLUT7CvgGN2++JKD8S8CHIrJFvYVoBWQYMFlEVuKGsW/LJ78ghJNNNQzDMKJASQvaWaraLyivQeCNBkh9evPZ54eo50HvyhNV9XG0Bx38rFeY/HG4xWP++0Cp0beAt0K9r6q/AdeGqC9c/rCg+0phnuWSTTWMY6VPnz7MnTuXGjVqsHr1agAeeOAB3nvvPcqUKcMZZ5zB5MmTqVq1KgcPHuRvf/sbqamplCpVimeffZbk5OToOmAYMUJJm9M28kFEPhCRqiHyh4lIru1ehlEQQimYderUidWrV7Ny5UoaNWrEiBEjAJg4cSIAq1atYv78+dx3331kZWUVu82GEYuUmKCtqumqmluouAgQkRYikhZ0fR6Jto4X74jNsH93Ve2iqjuK0yYj8QmlYNa5c+dsZbLzzz+fzZs3A7BmzRouvfRSAGrUqEHVqlVJTU0tXoMNI0YpacPjEUFVV3H0bOsiR0Ruxa02V2AlTgjlBcAvsDxAVZd4gin1cPvC6wFjVfU5T1jmQyAFuAC4TkT+gBviF+B9VR3ktZUOtFXV7SIyBCdAk4Gbu1+en62miBabRMuX/FTM/Lz88svcdNNNAJxzzjnMnj2bHj16kJGRwfLly8nIyKB9e5upMQwL2jGOiDQDhuBEYbZ7CmfjgWdU9b8iUg+3or2p90oToCNuEdk6T3kN3L7z3qr6dxGpDYwC2gC/Ax+LyHWqOiug3TZAD9zq+iRgBWGCtimixT7R8iVQUSpQwSyQ6dOns2PHDurUqYPP5+OMM85g/vz5NGnShJo1a9KkSRPWrl2bSxEtUUgkf8yXyGNBO/a5BCdzuh3cwjLvQJOzA7ZtnehtSQPXaz4AHBCRrUBNL3+Tqi7z0u0An6puAxCRV4GLgOygDfwRt9J9r1dmTjgDVfUl3Kp36jU8U59alRj/Wd3X4jDmy/GR3jP5aDo9nYoVK+ZYVDZ16lS++eYbPv30UypUyD4nJ3t4HOAPf/gD3bt35+yznf6Qz+dLqIVpieSP+RJ5EuNfpMQmlMhLKeACVd2Xo6AL4gcCsgLFWPITYglFKHGZPCl/QmnWFXBINNbx+Xw5gk48E4u+zJs3j1GjRrFw4cIcAXvv3r2oKhUrVmT+/PkkJSVlB2zDKOmUmIVoccynOMnTUwC84fGPgf7+AiJyrPPpnwMXi0g1ESmNE5pZGFRmEdBNRMp7vfhrCuuAYYRSMOvfvz+7d++mU6dOtGrVin793G7MrVu3cu6559K0aVNGjRrFtGnTomy9YcQO1tOOcVT1G+8Er4UicgSnVX4X8LwnmJKEC7DB+8/zqnOLiPwTtzBNgA9UdXZQmRUiMhNIw6m5LS4Sh4wSSSgFs759+4Ys26BBA9atWxdpkwwjLrGgHQeo6lRgalD2TSHKDQu6D9zi1jzo2WvAayHqaBCQfgJ44pgNNgzDMCKCDY8bhmEYRpxgQdswEpxnn32W3r1706xZM8aOHZudP27cOBo3bkyzZs0YOHBgFC00DKOg2PB4CUVE7gLuAFaoas9o22NEhtWrVzNx4kQmTJjAZZddxhVXXMFVV13F5s2bmT17NitXrqRs2bJs3bo12qYahlEALGiXXP4OXKmqG6NtiBE51q5dy/nnn0+5cuVISkri4osv5t133yU1NZXBgwdTtmxZwMmFGoYR+1jQLoGIyAs4qdM5IvI6cAbu6NAkYJiqzva2go0EkoGywPOq+mJ+dZuMaWzglw9t3rw5Q4YM4ZprrmHv3r188MEHtG3blvXr17N48WKGDBlCuXLlGDNmDO3atYuy1YZh5IeoHrN+hpEA+DXGcTrma1R1une61xc46dKeQA1VfVxEyuLO/L4xVM88SMa0zdCxE4vJi8hSszz8si//crFIizpVstPvv/8+77zzDpUqVaJ+/fqULVuW1NRUWrduzZ133sm3337L8OHDee211whQ2YtZMjMzqVSpUv4F44RE8sd8KTwdO3Zcrqpt8ytnQbuEEhC05wHlAL8w9cnA5cBjQEtgr5dfBfibqn6cV72NGzfWRNljG6syhoXB78uDDz5I3bp1mTNnDoMHD87274wzzmDZsmVUr149uoYWgET6u0Bi+WO+FB4RKVDQtuFxQ4DrVTVHpBXX5bpTVT+KjllGUeFfZPbDDz/wzjvvsHTpUkqVKsWCBQtITk5m/fr1HDx4kGrVqkXZUsMw8sOCtvERcKeI3KmqKiKtVfUrL/8OEVmgqodEpBHwo6ruybs6I9a4/vrrycjIoEqVKjz//POcdNJJ9OnThz59+tC8eXPKlCnD1KlT42Jo3DBKOha0jceAscBKr3edDlwNTAIaACu8/G3AdVGy0TgOFi9enGuor0yZMkyfPj16RhmGUSgsaJdQAuVKgb+FeJ4FPOhdhmEYRgxgQdswYoh169Zx001HZeU3bNjA8OHDWbp0afYhGjt27KBq1aqkpaVFy0zDMKKEBW3DiCEaN26cHYyQFkZoAAAgAElEQVSPHDlCnTp16NatGwMGDMguc99991GlSpVwVRiGkcAUm/a4iAwTkftFZLiIXFaI95NFZG4kbMunXZ+I5FqGLyK9RGR8cdtTlITzzXtWQUTeF5FvReQbERlZ3PaVdD799FPOOOMM6tevn52nqrzxxhvcfPPNUbTMMIxoUew9bVUdWtxtFicikqSqh/MvGRftj1HVFBEpA3wqIleq6od5vWCKaIXHr2Lm5/XXX88VnBcvXkzNmjU566yzis0uwzBih4gGbREZAtwKZOBWHy8XkSnAXFV9y+u9dcUJe3ysqvd7z/cDzYCawL2qOjeo3va4Fc/lgX1Ab1VdJyKLcXuL07xyS4A7VHVlCNvC1VEemAycDaz1nvvf6Q38E9gCrAcOePlTgN9wSmIrRGQoMI7c0qDNvLrL4EY5rgd+At4A6gKlgcdUdWaY7zMdmAl09LL+rKrfH0P7YX0LRlX3Aile+qCIrPBsDGVXoCIaQ1tE7TdLkVKzvAvcxYXP58tOHzp0iLfffpurr746R/4zzzxD+/btc+QVhMzMzGN+J1ZJJF8gsfwxX4oBVY3IBbQBVgEVgBOB74H7gSnADTjlrXUcVWWr6n1Owal0lQLOAjbjFLuSccEer74kL30Z8LaXvg0Y66UbAal52BeujnuBl710S9wPirZALeAHoDou6C4BxgfYPBco7d3/C7jF7xcuwFfEBdKeXn4ZXNC8HpgYYFeVPGxOB4Z46VsDvo+Cth/StwL8LasCG4CG+ZVt1KiRJgopKSlRa3vWrFnaqVOnHHmHDh3SGjVqaEZGxjHXF01fippE8kU1sfwxXwpPXvEq8IrknPYfgXdVda+q7gLmBD3fhetRTxKR7hyVywR4Q1WzVPU7L1g0CXq3CvCmiKwGnsH1ygHeBK4WkROAPrhgFo5wdVwETAdQ10P399LPA3yquk1VD+J6vIG8qapHvHRnYLCIpAE+3I+OesBS4EERGQTUV9V9uB82l4nIKBH5o6ruzMNmgBkBnxccY/vhfAuLiCR5bT2nqhvyK28UDTNmzMg1NP7JJ5/QpEkT6tYNOeBhGEYJINIL0cIKm6ubd20PvI0T7ZiXx3vB948BKaraHLgGF5T8Q7rzgWuBPwGv5WFbyDrysTsvofZApTC/NGgr76qnqmtV9TXcdMA+4CMRuURV13N0VGKEN7SdFxomnW/7BfAhFC8B36nq2GN8zygke/fuZf78+XTv3j1Hfqg5bsMwShaRDNqLgG4iUl5EKuMCYzYiUgk3FPwBMABoFfD4RhEpJSJn4I6QDD6Bogrwo5fuFfRsEvAc8KWq/paHfeHqWIQ74QoRaY4bRgb4HEgWkVO8nvyNedTtlwYVr57W3mdDYIOqPocbeWgpIrWBvao6HRgDnJtHvQA3BXwuPZb28/AtJCLyOO57GpBXOaNoqVChAr/++muubV1TpkyhX79+UbLKMIxYIGIL0VR1hYjMBNKATcDioCKVgdkiUg7XM7wn4Nk6YCFuIVo/Vd0fpIs8GpgqIvcCC4LaXS4iu3ALrvIiXB0TgMkistKz/Quv3i0iMgwXKLcAK3ALx0IRThr0JuAWETkE/AwMB9oBT4pIFnAIuCMfu8uKyOe4H1zhul3h2g/pWyhEpC4wBPgWt7gN3Bz+pHzsMwzDMCJERFePq+oTwBN5FGkfJn+JqgYGcVTVh5ufRVWX4haa+XnYn/B6rqWAPI+QDFeHN8/cI8w7kwnxY0BVewXd7yO0NOgIYERQ9kfeVVCeV9VHC9l+WN9ClN2M+zFl5EGDBg2oXLkypUuXJikpidTUVADGjRvH+PHjSUpK4qqrrmL06NFRttQwjETgmIO2iJwEnKYhtlFFGxG5Ffcj4V512tmGh4gcwc2bn4BbNT4Vt9LevqfjJCUlJcexlikpKcyePZuVK1dStmzZ7KMxDcMwjpcCBW0R8eEWUCXhhlW3ichCVb23qA0K7jUe47uvAK8E5nl7q+8OKrpEVf9R2HYijYi8C5welD1Icx7ycazsU9VWXv01cIv0qgCPeMPtZYPK/0VVVx1HeyWWCRMmMHjwYMqWdV9pjRo1omyRYRiJQkEXolXxtm11Byarahvc3uaYR1UnB6yi9l8xG7ABVLVbCJuPZQg9v/q34sRQ+ntz3jcBu4Es7/q7qq4SkWkicq3/PRF5VUS6FpUdiYCI0LlzZ9q0acNLL70EwPr161m8eDHnnXceF198MV9++WWUrTQMI1Eo6PB4kojUwm2jGhJBe4xiQlU3iEgpoAawFejkLfg7C7cvuy1uJf49uAWDVYA/4ARswlISZEwD5UaXLFlC7dq12bp1K506daJJkyYcPnyY33//nWXLlvHll1/ypz/9iQ0bNhC0mNIwDOOYKWjQHo5bLLVEVb/0ti59FzmzjGLCH0VOAMaLSCvgCN4CPVVdKCLPe8Pp3XGqcbl0PUuajGmwtOH69esBaN26NTNmzKBChQo0bNiQhQsXAnDw4EFmz55N1apVI25zOGJWkrEQJJIvkFj+mC+Rxy8haiQ4IpKpqpUC7hsCXwLVgEeASsBA3JTJflVN8soNAg7iVp33UdVv8mqncePG6j/3Od7x+XwkJyeHfb5nzx6ysrKoXLkye/bsoVOnTgwdOpT09HR++uknhg8fzvr167n00kv54YcfotrTzs+XeCKRfIHE8sd8KTwislxVQ566GEhBF6I1wu3xramqzUWkJdBVVR8/TjuNKCAi1YEXcPuu1Rv63qyqWSJyGzn3n0/B7ef+Ob+AXdL45Zdf6NatGwCHDx/mz3/+M1dccQUHDx6kT58+NG/enDJlyjB16lQbGjcMo0go6PD4ROAB4EVwutUi8hpgQTt+KO9pkfu3fE0Dnvae/Rt4W0RuxJ3slS2Jqqq/iMhaYFYx2xvzNGzYkK+//jpXfpkyZZg+fXoULDIMI9EpaNCuoKpfBPUWEmPisoSgquHU2/AOZgmUNP2nPyEiFXCnrc0Ifs8wDMMoXgq65Wu7pwOuACJyA07K00hgROQynIzpuAKcPmYYhmFEmIIG7X/ghsabiMiPuAMk7OSCBEdVP/FOCCuxJ3wdOXKE1q1bc/XVVwPw6aefcu6559KqVSs6dOjA999/H2ULDcMoSeQbtL29vG1V9TKgOtBEVTuo6qaIW2ccM+L4r4hcGZD3JxGZF1RumIjcX/wWxhfPPvssTZs2zb6/4447ePXVV0lLS+PPf/4zjz9uyzoMwyg+8g3anjZ1fy+9R1V3R9wqo9Co28PXD3haRMqJSEWcHntMq8DFItu2beP999/n9ttvz84TEXbt2gXAzp07qV27drTMMwyjBFLQhWjzvV7ZTHKuLM7rvGojSqjqahF5DxgEVAReUdX/icgQ4FYgA9gGLAcQkb/ixFHKAN8Df8Ft+1oJNFLVQyJyond/lqoeCtd2Iiii+RXPxo8fz9NPP83u3Ud/p06aNIkuXbpQvnx5TjzxRJYtWxYtMw3DKIEUSFxFRDaGyFZVbVj0JhlFgdfDXoETRmkLNMftuT4P92NtBfCCqo4RkVNU9VfvvceBX1R1nIhMBmar6ixP9ayxqt4Xoq1ARbQ2Q8dOjLyDEaRFnSosXbqUxYsXM3DgQNLS0pg5cyYjRoxg6NCh9OjRg7PPPpvXX3+djIwMHnjggWibnC+ZmZlUqlQp/4JxQCL5Aonlj/lSeDp27FggcRVU1a4EvXDyswO99ABgeMCzp4H7vfTFwGLc0Z0bccEc4EJc0AZYCjTPr81GjRppIjB48GCtVq2a1q9fX2vWrKnly5fXLl26aMOGDbPLbNq0SZs2bRpFKwtOSkpKtE0oMhLJF9XE8sd8KTxAqhbg3/WCKqLdGibgvxIq34gZ/Kd2+Qk3rDIFuE5VvxaRXkAygKouEZEGInIxUFpVV0fQ1phixIgRXH755SQnJ+Pz+RgzZgyzZs3i1FNPZf369TRq1Ij58+fnWKRmGIYRaQo6p90uIF0OuBQ3vGpBO35YBEwRkZG4v/s1eAp3QGVgi4icAPQEfgx47xWcsMpjxWhrTJKUlMTEiRO5/vrrKVWqFCeddBIvv/xytM0yDKMEUaCgrap3Bt57WtXTImKRERFUdYWIzATSgE244XA/DwOfe/mrcEHcz6s4udoSq4iWnJycfXBAt27dsvXGDcMwipuC9rSD2YuTtjRiGFUdFnT/BG77V3C5CbgDYULRAXhLVXcUuYGGYRjGMVEgRTQReU9E5njXXGAdMCeyphnRRkTGASMpQUPjwQpofu68886EWRVrGEb8UtCe9piA9GFgk6pujoA9JQYRuQu4A1ihqj2Ps65+wN5wCwNFZBiQqapjQj0Ph39aRER6ichdqtr/eOyMB/wKaH4BFYDU1FR27LCBBsMwok9Btce7qOpC71qiqptFZFRELUt8/o77XvMN2J40adi/laq+YCv5j5/NmzfnUkA7cuQIDzzwAKNHj46iZYZhGI6C9rQ74dS1ArkyRJ5RAETkBaAhMEdE6gGP+XvBIrIa8I/Nfog73/oC4DoR+QZ41nu+D7hW3XnXw/B60l4Pvh9uRGSNqvbw6jpbRHxAPWCsqj7ntXcLcBdODe1z4O+qekREeuOO6NwCrAcOFMS3eFRE8yugDRgwgNGjR+dQQBs/fjxdu3alVq1a0TLPMAwjmzyDtojcgesRNhSRlQGPKgNLImlYIqOq/UTkCqAjnq57GBoDvVX175CtcrZMVYeIyGjgr7iV3YEMBk5X1QMiUjUgv4nXXmVgnYhMAM4EbgIuVCdV+m+gp4jMBx4F2gA7cT8cvgpnZJAiGkNbxNdR6z6fj6VLl3Lo0CF2795NWloav/76K5s2bWLSpEmMHTsWn8/HkSNH8Pl80Ta3UGRmZsat7cEkki+QWP6YL5Env572a7je3ghcMPCzW013vDjYpKqB4tYHgbleejluBCSYlcCrIjILmBWQ/76qHgAOiMhWoCZuv30b4EsRASgPbMVJnfpUdRuAt1WsUTgjVfUl4CWAxo0b6509rz1WP6PORx99xPLly+nVqxf79+9n165d9O/fn4oVK9K3b18ADhw4wO233x6Xx3H6fL7sbWvxTiL5Aonlj/kSefKc01bVnaqarqo3qzuKcx9OVauSN6xrHD+Hyfl3KBeQ3hNU9pAndwdwhNA/uq4CnscF4+Ui4i8TOLztf1eAqarayrsaB2wTy1+UPoEYMWIEmzdvJj09nddff51LLrmE9957j59//pn09HTS09OpUKFCXAZswzASh4Ju+bpGRL7D6VIvBNJxPXDj+EkHzgUQkXOB0wtbkbdY7TRVTQEGAlWBvPYpfQrcICI1vPdPFpH6uLntZBE5xVNJu7GwNhmGYRhFR0FXjz8OnA+sV9XTccOqNqddNLwNnCwiabgtYOuPo67SwHQRWYWbg34mL1EUVV0DPAR87K1ZmA/UUtUtwDDcISGf4CRrSwzJycnMnTs3V35mZmYUrDEMwzhKQVePH1LVX0WklIiUUtUU2/J1fKhqg4DbzmGKNQ96p1JA+i3gLS89LKBYhxBtDQu6bx6Qnok7Jz34ncnA5DB2GYZhGFGgoEF7h4hUwulVv+otZIqvJcKGEYIjR47Qtm1b6tSpw9y5c9m4cSM9evTgt99+o27duvzhD3+gTJky0TbTMAwDKPjw+LU4vfEBwDzgf7hTooxiREQmicjZRVSXjfVyVAHNz6BBg7jnnnv47rvvqFy5Mv/5z3+iaJ1hGEZOChS0VXUPcBqQrKpTgUm47UdGMaKqt3vz0EYREKyApqosWLCAG264AYDLL7+cWbNm5VWFYRhGsVLQ1eN/xc2f+s9frkPOPcBGESMiFUXkfRH5WkRWi8hNIuITkbbe80wRGSUiy0XkExFp7z3fICJdvTK9RGS2iMwTkXUi8kiYth4QkS9FZKWIPOrltfPuy3m2fCMizUO9H6/4FdBKlXL/G/z6669UrVqVpCQ3a1S9enV+/PHHvKowDMMoVgo6p/0PoD1uKxCq+p1/m5ARMa4AflLVqyD7DPM7Ap5XxAmgDBKRd3Er/DsBZwNTOXoKW3vcgra9OBGV91U11V+JiHTGHbPaHrdve46IXKSqi0RkjldveWC6qq7Oz+h4kDFNH3kVc+fOpUaNGrRp0yZb9ejoFvijeKIzhmEYMUFBg/YBVT3o/wfME+woUeIbUWAVMMZbpT9XVRcHBZCDuPUF/rIHPCnSVUCDgHLzVfVXABF5B7e6PDXgeWfv8suUVsIF8UXAcOBLYD9Onzwk8SZj6vP5mDFjBh9//DHvvPMOBw8eZO/evdx8881s27aNTz/9lNKlS/PDDz9Qrly5mJQyPFZiVZKxMCSSL5BY/pgvkaegQXuhiDwIlBeRTjg98vciZ5ahqutFpA3QBRghIh8HFQlUR8vCUzxT1awAFTTI/eMq+F6AEar6Irk5GRfET8AptQUrtPltjTsZ00B5Qp/Px5gxY5g7dy433ngj27Zto0ePHjz99NP07t07JqUMj5VYlWQsDInkCySWP+ZL5Cno6vHBwDZcj+5vwAc4UQ4jQohIbdwZ2dNx55mfW8iqOnlKZ+WB68gtivMR0Mfb0oeI1AmY+ngJeBh4FSgR+/JHjRrF008/zZlnnsmuXbuydccNwzBigfxO+aqnqj+oahYw0buM4qEF8KSIZAGHcPPZYwpRz3+BabgTvV4LnM8GUNWPRaQpsNQbfs8EbvFOITusqq+JSGngMxG5RFUXFN6l2CQ5OTn7F3XDhg354osvAPdLu2zZslG0zDAMIyf5DY/P4qgu9tuqen3kTTIAVPUjXC84kOSA54HqaMOC3g3UG9+qqrmO/wx6/1ncOd2B/A94xXt+BHfyl2EYhhFF8hseD1z51DCShhiGYRiGkTf5BW0NkzbiAFWdEqqXXdLZv38/7du355xzzqFZs2Y88ojbvr5gwQLOPfdcmjdvzm233caRI0eibKlhGEZO8gva54jILhHZDbT00rtEZLeI7CoOAw2jqClbtiwLFizg66+/Ji0tjXnz5vHZZ59x22238frrr7N69Wrq16/PvHnz8q/MMAyjGMkzaKtqaVU9UVUrq2qSl/bfn3gsDYnIMBG5X0SGi8hlx2qoiCSLSO7zEiNMoApZUH4vERlf3PYUJeF8C3jeRkRWicj3IvKcJIjSiIhQqZKb0j906BCHDh2idOnSlC1blkaNGgHQqVMnFi9eHE0zDcMwclHQfdpFhqoOLe42ixMRSVLVqKmLFHH7E3CiKctw2/yuAD7M64VYV0RLH3kV4E73atOmDd9//z3/+Mc/aN++PYcOHSI1NZW2bdvy1ltvsXXr1ihbaxiGkZOIBm0RGQLcCmTg9nkvF5EpOIWvt0RkJNAVd8znx6p6v/d8P9AMqAncq6pzg+ptD4zFyWvuA3qr6joRWQzcqappXrklwB2qujKEbeHqKI87R/psYK333P9Ob+CfwBZgPZ6giWfzb0BrYIWIDAXG4bZtJQHDVHW2iDTz6i6DG+W4HvgJeAOoC5QGHvPOuA71fabjzr7u6GX9WVW/P4b2w/oWoq1awImqutS7fwW3zztX0I4nRbRAhaOxY8eSmZnJww8/TJMmTRg4cCB9+vTh0KFDtG3bFhGJSUWkwhCr6k6FIZF8gcTyx3wpBlQ1IhfQBifGUgE4EfgeuB+YAtyAU9taB4hXvqr3OQUnz1kKJ6e5GafGlYwL9nj1JXnpy4C3vfRtwFgv3QhIzcO+cHXcC7zspVviflC0BWoBPwDVcUF3CTA+wOa5QGnv/l/ALX6/cAG+Ii6Q9vTyy+CC5vXAxAC7quRhczowxEvfGvB9FLT9kL6Faast8EnA/R/97eV1NWrUSOONYcOG6ZNPPpkj76OPPtKLL744OgZFgJSUlGibUGQkki+qieWP+VJ48opXgVdBFdEKwx+Bd1V1r6ru4ugBFn524XrUk0SkO+5ACz9vqGqWqn4HbACaBL1bBXhTRFYDz+B65QBvAleLyAlAH1wwC0e4Oi4CpgOo66H7e+nn4Q7o2KaqB3E93kDeVLefGZyW92ARSQN8uB8d9YClwIMiMgior6r7cD9sLvNO7Pqjqu7Mw2aAGQGfFxxj++F8C0Wo+euE2EGwbds2duzYAcC+ffv45JNPaNKkSfZw+IEDBxg1ahRdu3aNppmGYRi5iPScdth/5FX1sDdEfSnQA+gPXBLmveD7x4AUVe0mIg1wgQlV3Ssi84FrgT/heovhCFlHPnbnFbQCdbkFuF5V1wWVWSsinwNXAR+JyO2quiBYY1xVh+fRTrhtePm2760jK2jg3YwbsvdTFzeUH/ds2bIle0tXVlYWf/rTn7j66qt54IEHmDt3LllZWdxxxx20atUq2qYahmHkIJI97UVANxEpLyKVgWsCH3pa11VU9QNgABD4L+SNIlJKRM7AiboEB78qgP+g415BzyYBzwFfqupvedgXro5FQE/Pxua4YWRwx5Imi8gpXk/+xjzq/gi407/aWkRae58NgQ2q+hxu5KFlITTGbwr4XHos7efhWy5UdQuwW0TO9+q5FZidj21xQcuWLfnqq69YuXIlq1evZuhQtzbyySefZO3ataxbt44BAwZE2UrDMIzcRKynraorRGQmkAZsAoL3z1QGZotIOVzP8J6AZ+uAhbiFaP1UdX/QbqPRwFQRuRfIoYWtqsu9PeST8zExXB0TgMkistKz/Quv3i0iMgwXKLcAK3ALx0LxGG6R20ov4KUDV+MC7S0icgj4GXf0ZTtya4znRVmvt14KuPkY2w/pWx7cgZtiKI9bgJbnynHDMAwjskR0eFxVnwCeyKNI+zD5S1Q1MIijqj6ODoMvxS008/OwP+H1XEsBwUdZBtsWsg5vnrlHmHcmE+LHgKr2CrrfhzsNLbjcCGBEUHYojfG8eF5VHy1k+2F9C4W6w0WaH4NtMcP+/fu56KKLOHDgAIcPH+aGG27g0UcfpWfPnqSmpnLCCSfQvn17XnzxRU444YRom2sYhlEgIjk8XuyIyK24Yewh6k4mKzGIyF0islZEfox30ZeiIJTq2bJly+jZsyfffvstq1atYt++fUyaNCnaphqGYRSYYhdXyY/gXuMxvvsK3slUfry91XcHFV2iqv8obDuRRkTeBU4Pyh6kqg3yeO3vwJXAxeS9AC9Ue58DwWdQ9lJvv3s8Ekr1TETo0qVLdpn27duzefPmaJloGIZxzMRc0C5qwg1pxzKq2u1YyovIC7gFe3OAlwPy63v31XHiNr1V9YcQ+Td6+VM4KtLyFxGpwtEjOxW4SFV352VLtBXR/IpnkFv17Lzzjp4ueujQIaZNm8azzwafSGoYhhG7+IVNjDjHU0tri1tw1lZV+4vIe8BbqjpVRPoAXVX1ujzypwDVgGtV9YhXbqSqLvFW++/XEBKpQYpobYaOnVgcLoekRZ0qufL8qmd33XUXp5/uBjDGjBlDuXLl6N8//CFomZmZ2b31eMd8iV0SyR/zpfB07NhxuarmO0qa8D3tEs4FQHcvPQ23Yj6vfMgp0rIEeFpEXgXeUdWQY8mq+hLwEkDjxo31zp7XFp0HRcTy5cv59ddf6d27N48++ihJSUm88cYblCoVflmHz+cjOTm5+IyMIOZL7JJI/pgvkSehFqIZ+VIQ0ZhskRZVHQncjtvytUxEgpXpYpZwqmeTJk3io48+YsaMGXkGbMMwjFjEetqJzWe4LV7TcKIq/80nPwcicoaqrgJWicgFODnZbyNtdFEQTvUsKSmJ+vXrc8EFTgG2e/fu2eIqhmEYsY4F7cTmLuBlEXkAbyFaPvnBDBCRjsARYA1xJK7iVz0L5vDh2D2BzDAMIz8saCcIAdvBpngXqprOUT33wLLh8nsF3d9ZlDYahmEYx4dN6hmGYRhGnGBB20gIMjIy6NixI02bNqVZs2bZ+6/T0tI4//zzadWqFW3btuWLL/KTWzcMw4hdLGjHOCKSWQxt+ETkmFTUYo2kpCSeeuop1q5dy7Jly3j++edZs2YNAwcO5JFHHiEtLY3hw4czcODAaJtqGIZRaGxO2wiLiJQO2LMd09SqVYtatWoBULlyZZo2bcqPP/6IiLBr1y4Adu7cSe3ataNppmEYxnFhQTtO8BTJZgMnAScAD6nqbBFpAMxV1eZeufuBSqo6TER8uANUOgJVgb6qulhEyuOkXc8G1uL2YfvbyQSeBi4HPhCRVn5ZVRHpBNyhqn5hllwUt4xpoGxpdl56Ol999RXnnXceY8eO5fLLL+f+++8nKyuLzz77rNhsMwzDKGosaMcP+4FuqrpLRKrhxE7mFOC9JFVtLyJdgEeAy3DnZO9V1ZYi0hJ3NrifisBqVR3qncW9VkSqq6p/a1guHfcgGVOGtii+bVU+ny/H/b59+7j77ru5/fbbWbFiBc899xx9+/bl4osvJiUlhe7du/PUU08VqO7MzMxc9ccr5kvskkj+mC/FgKraFcMXkOl9ngCMB1YCacA+4FSgAS7I+svfDwzz0j7gQi9dE/jeS88CLgl4ZwVOrxzgMFA64NkQ4B5cT30j7kdAWHsbNWqk0eLgwYPauXNnfeqpp7LzTjzxRM3KylJV1aysLK1cuXKB60tJSSlqE6OG+RK7JJI/5kvhAVK1ADHBFqLFDz1xp3K1UdVWwC9AOVyQDfw7lgt674D3eYScIyvhJE33a8557MnALcDNOF3ymFQnUVX69u1L06ZNuffee7Pza9euzcKFCwFYsGABZ511VrRMNAzDOG5seDx+qAJsVdVDnkpZfS//F6CGiJwCZOJO+ZqXT12LcD8CUkSkOdAyXEFV/UlEfgIeAjodpw8RY8mSJUybNo0WLVrQqlUrAP71r38xceJE7r77bg4fPky5cuV46aWXomypYRhG4bGgHT+8CrwnIqm44fFvAbwgPhy34GwjBdMGnwBMFhH/UHt+m5dfBaqr6prCGh9pOnTo4B/Oz8Xy5cuL2RrDMFZyonoAABjUSURBVIzIYEE7xlHVSt7ndtyRmqHKPAc8FyI/OSC9HTf/jaruwx0YEra9IDoA0Tsk2zAMwwBMXMXIBxFZjhs+nx5tWwIJp4DmZ8yYMYgI27dvj5KFhmEYRY/1tI08UdU20bYhFH4FtHPPPZfdu/+/vbMPt6qq8/jnC757FVO05yIK2sCogF5BTUcjEK8mviCjJpbx4lhaZqSjhUMZmRUjT5NljJqpYOOQobzl4AsKROOIAcaLwdyguCMGSjwoctE05Td/rHXgcDzn3Mv1nLPPPv4+z7Ofs/Zvr73X73cW3HX2evmurfTr14/GxkaOO+441q1bx5w5czjyyCOTdtNxHKek+Jv2h5xsCVNJsyUdFNNfkbRK0kOS9pb0tKSlki5L1uNAfX09ffv2BXZVQAO4/vrruf322wnLzB3HcWoHf9OuAqKIicxse5J+mNngrNMvAeea2VpJpwJ7xqVmRSm3IlprCmizZs3i8MMP54QTTiibD47jOEmhQjNunfIS5UcfB+YRJpjdQRBGEfBfZvb1mO9y4F/y2FuAiQSFs9dintuBI4GvmlletbQ8EqbdgWvNbLGkZuAk4DbgSqCJMJb9ecIa8bXAxWb2x5xnZiui9bvljvLNWetzeKddzjMKaFdccQWnnHIK119/PRMmTKCuro5hw4Zxzz330KlTpwJPK05LSwt1dfnm5aUPj6V6qaV4PJb2M3DgwCVm1vrGTW1RYPGjLEpn3YHtwKlAF+AlQsO4BzAXuKiQPd5vhDdhgOnAUwTVtBOApUXKvQG4P6aPJ4izZNTQmoHOedIDCPrmrcZVSUW0XAW05cuX26GHHmrdunWzbt26WceOHe2II46wDRs2tOv5ru5UndRSLGa1FY/H0n5ooyKad48ny/+Z2UJJQ4D5FvS9kfQQ0J/QMOezzwDeYaeIygrgbQtrtlcQl3YVoD9xeZiZLY9rtVOH5VFA69OnDxs3btyRp3v37ixevJjOnTsn5abjOE5J8YloybItfhaaMVVsJtXf4q8zCG/sbwNYGBdv7cdY6sdEMgpoc+fOpaGhgYaGBmbPnp20W47jOGXF37Srg+eBH8Xdu14j6HzfSVAqy2f/ILRZwrSaKaaAlqG5ubkyzjiO41QIb7SrADPbIOlmwqQ0AbPNbCZAIfsHYHclTB3HcZwqwRvthDCzZqB31vl/Av+ZJ18he11Welyha3nuKyZh2r1Aej5hm8+qYN26dQwfPpxXXnmFDh068IUvfIHRo0fzzW9+k5kzZ9KhQwcOO+wwJk2aRJcuXZJ213Ecp2T4mLaTOjJqaKtWrWLhwoVMnDiRlStXctNNN7F8+XKWLl3K+eefz6233pq0q47jOCWlYo22pHGSbpR0q6Sz2nH/AEmPlcO3VsrdoRiWYx8p6SeV9qetSDonKphlH9Nz8uSNLev6dyWti2vCq4ZCamgHHnjgjjzbtm1zRTTHcWqOinePm9ktlS6zkkjaw8zeTbp8M3sSePIDPu5XwE+A1W29oZyKaK2poQGMHTuWBx98kE6dOjFv3ryy+OE4jpMUZVVEkzQWGA6sA/4CLCGM4z5mZo9IGg9cSBD4eMrMbpQ0Cfgr0Av4KHCDmT0maQBwo5mdL+kUgoLYvsBbwCgza5L0G+A6M1say38W+KKZvW8tcpFnFFMMGwXcDGwA/kBYG/3l6PNm4ETgBeAWwizvPoQfRuPMbKakXvHZexF6OS4G1gO/BLoCHYHvmNnDBb7PZuBhYGA0fcbM1uxG+QVjy1deVrktxcbJK6WIVkwNrX///rtce+ihh3jnnXcYNWpUu8tzdafqpJZigdqKx2NpP4krogH9CKIf+wEHAmsIMp2TgEuAgwkymZkfDgfFz0kE0ZAOQA/gZWAfslS54vP2iOmzgEdjegRwR0z3pIjCTJFn5FUMA+rZqU62F/As8JMsnx8DOsbz7wFXZOIiNPD7ExrSz0b7XoQfDBcD92b51amIz83A2JgenvV9tLX8gmpordRlS1vrvVKKaLlqaLk0Nzdbr169PlAZru5UndRSLGa1FY/H0n6KtVfZRznHtD8BTDezN83sDSBXC/sNwhv1zyT9I/Bm1rVfmtl2M1sN/Ak4JufeTsBUSS8CPyS8lQNMBc6XtCdBO3tSEf8KPaM/ce9oC2/ombf0jxPVyczsHcIbbzZTzey9mD4bGCNpKWHW9T4ETfDngH+R9HWgm4WZ3CuAsyT9q6RPmNmWIj4DTMn6PG03yy8UW6qwPGpoAKtX7+zFnzVrFscck/vPxnEcJ92Ue0y7YN+7mb0bu6gHEZYgfRk4s8B9ueffAeaZ2dC48cb8+Mw3Jc0BhgCfJrwhFyLvM1rxu9hYwrastAgbazTl5Fkl6XngPOBJSVeZ2VxJ/YDBwPclPWVmxaY9W4F0q+XHiVk1o4bWp08fGhrCxmPf+973uO+++2hqaqJDhw5069aNu+++O2FPHcdxSks5G+0FwKQ4br0HcAFwT+aipDpgPzObLWkhofs8w6WSJgNHAUcTutFPzbreCfhzTI/MKfdnhAlUvzGzzUX8K/SMQophGdWyQwi9BJcCywo8+0ngOknXmZlJOtHMfifpaOBPZvbjmD5e0v8Cm83sP+Is7dx4crkMGB8/n9ud8ovElioKqaENHjw4T27HcZzaoWzd42b2AqELeSnwKPCbnCwHAI9FZa5fA9dnXWuKtseBa8zsrzn33k54K32WMHkru9wlhEb1gVZcLPSMu4C66NfXiIphZrYBGEdoKJ8mTPgqxHcIO24tj93v34n2y4AXY7f1McCDhMliv422sYRtMYuxd3xbH82u31lbys8bWyEk3S7pZWA/SS9LGteKb47jOE4ZKWv3uJl9F/hukSynFLA/a2a7NEiWpcplZs8RJppl+GYmIakL4cfIU634lvcZVlwx7AHy/Bgws5E5528BV+fJ933g+znm3V2aNdHMvt3O8gvGlg8z+xqhcXccx3GqgJpSRJM0nNCNPdbCbldODbFu3ToGDhzIscceS69evfjRj34EwNSpU+nVqxcdOnRg8eKiq9ccx3FSTdVpj+e+Ne7mvQ8Supx3ENdWj87J+qyZXdvecspNVC47Ksf8dcvSAy9y763AAjN7ejfKex7Ym7CcbRNhstrnzGxFm52uABn50r59+7J161b69etHY2MjvXv3Ztq0aVx99fs6FxzHcWqKqmu0S02hLu1qxsyGtuc+SR2tHYpzZvbxeH8zMMjMNrWn/HJTX19PfX09sKt8aWNjY8KeOY7jVIaab7Rrhbgs7QlC9/+JBMGU4cBK4H7C2uyfSPoUQWhlG0Hl7dPx/gHAP5vZBZLuAk4miLs8YmbfkvQVoAthZvkmMxso6Wzg24S38D/G5xXVIS+HjGlb5Esdx3E+DHijnS7+HvgnM3tW0v3Al6L9r2Z2BkBstAHmAPdI2t/MthFmrmcEYcaa2WZJHYFnJB0fl6HdAAw0s02SOgPfAM4ys21REOYG4H1ryHNkTLmlT2ml1+fPn7/LeUa+9KqrruKFF3ZO4n/99ddZsmQJLS2l2d+kpaXlfWWnFY+leqmleDyWCtAW2TQ/kj8IOuEvZZ2fCcwgSJt2y7JPAi6J6Z8SZovvQZBgPSDaryEsWVtO0IQfFu3NQOeYPp8wvr00HiuB+1rzs9wypsXkSz/5yU/aokWLSlaWSzJWJ7UUi1ltxeOxtB/aKGPqb9rpopBS3LbcjJGHgWsJm4ksMrOtko4iaMCfbGavxc1G9slzr4A5Znb5B3e7NJjlly91HMf5sFBTS74+BBwpKaM3fjnw363knw/0BT7Pzq7xAwmN/BZJHwXOzcq/lSB6A7AQOF3S3wFI2k9S9rr2ipORL507dy4NDQ00NDQwe/Zspk+fTteuXXnuuec477zzOOecc5J003Ecp2z4m3a6WAWMkHQPYY/ru4DrCmU2s/ckPUaQRh0Rbcsk/Q74PWEzlmezbvkp8LikDRYmoo0EpkjaO17/BmECXCIUki8FGDq0XRPuHcdxUoU32uliu5ldk2Prnn1i71dH+zJhM5aCebLsdxK2D82czyXMMnccx3GqAO8ed1JBITW0zZs309jYSI8ePWhsbOS1115L2FPHcZzy4Y12hZHUPW7isVuYWTNhr/DdvrcWyKihrVq1ioULFzJx4kRWrlzJ+PHjGTRoEKtXr2bQoEGMHz8+aVcdx3HKhjfaNYCkmh/mqK+vp2/fvsCuamgzZ85kxIgRAIwYMYIZM2Yk6abjOE5Zqfk/9lXKHnG/8Gxls2OBfwPqCOujR5rZBkn9CIpnb5I1WzxOEjuPsFxrf0mDCNuNnktYCnabmT0sSQXsAwhqZ68CDcA0YAVBp31f4CIz+6OkS4FvAe8BW8ysf7HASq2I1poa2quvvrpD2rS+vp6NGzeWrGzHcZxqwxvtZMhVNrsWGAoMMbO/SLqMsKXplQTd9OvM7NeSJuQ85zTgeAvqZhcTGt8TgM7AIkkLgH8oYCfajiWs4/4T8DMzO0XSaMKs9K8CtwDnmNmfJR2UL5hyKqK1pob27rvv7pIn9/yDULWKSO3AY6leaikej6UCtEWBxY+yK5s9DbzBTvWxFYT9wDvl5D0eeDGmRwIPZF37IXBl1vnPgQuL2AcQxFMy9gXA6Vk+zYjpuwmSqJ8HDmktvnIqouVTQ+vZs6etX7/ezMzWr19vpSzf1Z2qk1qKxay24vFY2g9tVETzMe1kyF1svBX4vZk1xKOPmZ1NUCXLvzA5kK2EpgJ5CtkB3s5Kb886307shbGwxOwbwBHAUkmHFHle2bACamgXXnghkydPBmDy5MkMGTIkCfccx3EqgjfayZCrbLYQODRjk7SnpF5m9jpBueyMmPezRZ65ALhMUkdJhwL9gd8WsbcJSR8zs+ctbPm5idB4V5xCamhjxoxhzpw59OjRgzlz5jBmzJgk3HMcx6kIPqadDLnKZncCTwI/ltSJUC93EFTLRgH3S3oz5inEdMIY9zLC2/nXzOwVSYXsx7TR1wmSehDe2J+Jz6k4xdTQnnnmmQp74ziOkwzeaFcYC+utj8tzaSnhLTg3/xLChLEM46J9EmFHr0w+A26KB22wzydok2fOB+S7Zmb/WDQgx3Ecp2J497hT9Vx55ZUcdthh9O7de4dt2bJlnHbaafTp04cLLriAN954I0EPHcdxKoM32mVmdxXQJI2U1CXrvFlS5/J4lw5GjhzJE088sYvtqquuYvz48axYsYKhQ4cyYULuajjHcZzawxvt6mMk0KW1TNnUuiJa//79Ofjgg3exNTU10b9/GE1obGzk0UcfTcI1x3GcilLTf+yriHwKaDcCFxDUx/4HuBq4GDgJeEjSW4QJZADXSboA2BO41Mz+V9I4QuPeHdgk6UrCVp0nAe8CN5jZPEn7FLCPBC4COgK9gR8AewGfIyz9GmxBtOUrwDXx3pVmNqxYoKVURMunhpahd+/ezJo1iyFDhjB16lTWrVtXkjIdx3GqGRWakeuUBkndgbXAGbZTAW0lcL+ZbY55fg780sx+JWk+cKOZLY7XmoEfmNmdkr4E9DWzq2KjfUF87luS/hnobWaj4szwp4CeBLW1fPZhhPXXJxKkUNcAXzezuyX9EPg/M7tD0nrgKDN7W9JBcRlabozZimj9brnj3pJ8d30O77Qj/corr3DzzTfzwAMPAPDSSy9x5513smXLFk4//XSmTZvGzJkzS1JuhpaWFurq6kr6zKTwWKqXWorHY2k/AwcOXGJmJ7WasS0KLH6UXAFtBuGt+nmC+tmfgTHx+nzgpKz8zcDhMf1x4OmYHgd8KyvfdODMrPPfEBTUCtlHAvdm2V/KKudK4I6YfgJ4BLgCqGst3nIpoq1du9Z69eqV91pTU5OdfPLJJS/T1Z2qk1qKxay24vFY2g+uiFZV5HZnGPDvwCVm1ge4l/C2W4iMUtl77DqkUXZFNMKmJBOBfsCSahk/z2wMsn37dm677TauueaahD1yHMcpP95oV4ZcBbTMbl2bJNUBl2Tl3Qoc0I4yFhAV0yT1BI4EmorYW0VSB+AIM5sHfA04iLALWUW5/PLLOe2002hqaqJr167cd999TJkyhZ49e3LMMcfQpUsXRo0aVWm3HMdxKk5VvDV9CMhVQLsL+Aiha7wZWJSVdxJwd85EtLbw7/G+FYRJYyMtjEMXsrflmR2B/4gqbQJ+aHnGtMvNlClT8tpHjx5dYU8cx3GSxRvtMmOFFdC+EY/c/I8C2euXumddW0zYnQszG5dz318J49S5zytkn8SuimrdC1w7A8dxHKcq8O5xx3Ecx0kJ3mg7juM4TkrwRttxHMdxUoI32o7jOI6TErzRdhzHcZyU4DKmTkmRtJU2rgNPAZ2BTUk7USI8luqlluLxWNpPNzM7tLVMvuTLKTVN1hb93BQgabHHUn3UUixQW/F4LOXHu8cdx3EcJyV4o+04juM4KcEbbafU/DRpB0qIx1Kd1FIsUFvxeCxlxieiOY7jOE5K8Ddtx3Ecx0kJ3mg7juM4TkrwRtspCZI+JalJ0hpJY5L2Z3eR1CxphaSlkhZH28GS5khaHT8/krSfhZB0v6SNkl7MsuX1X4Efx7paLqlvcp6/nwKxjJP051g/SyUNzrp2c4ylSdI5yXidH0lHSJonaZWk30saHe2pq5sisaSubiTtI+m3kpbFWL4d7UdJej7Wy8OS9or2veP5mni9e2LOm5kffnygg7Dv9h+Bo4G9gGXAcUn7tZsxNAOdc2y3A2Niegzwr0n7WcT//kBf4MXW/AcGA48T9kg/FXg+af/bEMs44MY8eY+L/972Bo6K/w47Jh1Dln/1QN+YPgD4Q/Q5dXVTJJbU1U38futiek/g+fh9/xIYFu13A1+M6S8Bd8f0MODhpHz3N22nFJwCrDGzP5nZO8AvgCEJ+1QKhgCTY3oycFGCvhTFzBYAm3PMhfwfAjxogYXAQZLqK+Np6xSIpRBDgF+Y2dtmthZYQ/j3WBWY2QYzeyGmtwKrgMNJYd0UiaUQVVs38fttiad7xsOAM4FHoj23XjL19QgwSJIq5O4ueKPtlILDgXVZ5y9T/D9zNWLAU5KWSPpCtH3UzDZA+IMFHJaYd+2jkP9pra8vxy7j+7OGKlITS+xSPZHwVpfqusmJBVJYN5I6SloKbATmEHoCXjezd2OWbH93xBKvbwEOqazHAW+0nVKQ7xdn2tYSnm5mfYFzgWsl9U/aoTKSxvq6C/gY0ABsAH4Q7amIRVId8CjwVTN7o1jWPLaqiidPLKmsGzN7z8wagK6EHoBj82WLn1UTizfaTil4GTgi67wrsD4hX9qFma2PnxuB6YT/xK9muibj58bkPGwXhfxPXX2Z2avxj+x24F52drNWfSyS9iQ0cg+Z2bRoTmXd5IslzXUDYGavA/MJY9oHScrsyZHt745Y4vVOtH0Ip6R4o+2UgkVAjzjzci/CRI1ZCfvUZiTtL+mATBo4G3iREMOImG0EMDMZD9tNIf9nAcPjTOVTgS2ZrtpqJWdcdyihfiDEMizO7j0K6AH8ttL+FSKOe94HrDKzf8u6lLq6KRRLGutG0qGSDorpfYGzCGP084BLYrbcesnU1yXAXIuz0ipO0rP4/KiNgzDr9Q+EcaGxSfuzm74fTZjlugz4fcZ/wpjVM8Dq+Hlw0r4WiWEKoWvyb4S3gn8q5D+hq29irKsVwElJ+9+GWH4efV1O+ANan5V/bIylCTg3af9zYjmD0I26HFgaj8FprJsisaSuboDjgd9Fn18Ebon2owk/LNYAU4G9o32feL4mXj86Kd9dxtRxHMdxUoJ3jzuO4zhOSvBG23Ecx3FSgjfajuM4jpMSvNF2HMdxnJTgjbbjOI7jpIQ9Ws/iOI6TLJLeIywrynCRmTUn5I7jJIYv+XIcp+qR1GJmdRUsbw/bqUHtOFWDd487jpN6JNVLWhD3c35R0iei/VOSXoj7Jj8TbQdLmhE3uFgo6fhoHyfpp5KeAh6MG0pMkLQo5r06wRAdB/Duccdx0sG+cUcmgLVmNjTn+meAJ83su5I6AvtJOpSghd3fzNZKOjjm/TbwOzO7SNKZwIOEzS4A+gFnmNlbcbe3LWZ2sqS9gWclPWVhm0nHSQRvtB3HSQNvWdiRqRCLgPvjhhYzzGyppAHAgkwja2aZDR7OAC6OtrmSDpHUKV6bZWZvxfTZwPGSMlrUnQj62d5oO4nhjbbjOKnHzBbE7VTPA34uaQLwOvm3Tyy2zeK2nHzXmdmTJXXWcT4APqbtOE7qkdQN2Ghm9xJ2ouoLPAd8Mu4wRVb3+ALgs9E2ANhk+fe4fhL4Ynx7R1LPuAuc4ySGv2k7jlMLDABukvQ3oAUYbmZ/iePS0yR1IOxZ3QiMAx6QtBx4k51bLubyM6A78ELclvIvwEXlDMJxWsOXfDmO4zhOSvDuccdxHMdJCd5oO47jOE5K8EbbcRzHcVKCN9qO4ziOkxK80XYcx3GclOCNtuM4juOkBG+0HcdxHCcl/D/h7SdYYuIhZAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb273fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画出最重要的20个特征\n",
    "\n",
    "from xgboost import plot_importance\n",
    "plot_importance(model_XGB,max_num_features=20) \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=227,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.000,n=71,accuracy: 73.70%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=62,accuracy: 73.61%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.001,n=53,accuracy: 73.64%\n",
      "Thresh=0.002,n=47,accuracy: 73.68%\n",
      "Thresh=0.002,n=47,accuracy: 73.68%\n",
      "Thresh=0.002,n=47,accuracy: 73.68%\n",
      "Thresh=0.002,n=47,accuracy: 73.68%\n",
      "Thresh=0.002,n=47,accuracy: 73.68%\n",
      "Thresh=0.002,n=42,accuracy: 73.67%\n",
      "Thresh=0.002,n=42,accuracy: 73.67%\n",
      "Thresh=0.003,n=40,accuracy: 73.67%\n",
      "Thresh=0.003,n=39,accuracy: 73.74%\n",
      "Thresh=0.003,n=39,accuracy: 73.74%\n",
      "Thresh=0.004,n=37,accuracy: 73.62%\n",
      "Thresh=0.004,n=37,accuracy: 73.62%\n",
      "Thresh=0.004,n=37,accuracy: 73.62%\n",
      "Thresh=0.004,n=37,accuracy: 73.62%\n",
      "Thresh=0.004,n=37,accuracy: 73.62%\n",
      "Thresh=0.005,n=32,accuracy: 73.71%\n",
      "Thresh=0.005,n=32,accuracy: 73.71%\n",
      "Thresh=0.005,n=30,accuracy: 73.65%\n",
      "Thresh=0.006,n=29,accuracy: 73.64%\n",
      "Thresh=0.006,n=29,accuracy: 73.64%\n",
      "Thresh=0.006,n=29,accuracy: 73.64%\n",
      "Thresh=0.007,n=26,accuracy: 73.65%\n",
      "Thresh=0.007,n=25,accuracy: 73.55%\n",
      "Thresh=0.007,n=25,accuracy: 73.55%\n",
      "Thresh=0.007,n=25,accuracy: 73.55%\n",
      "Thresh=0.009,n=22,accuracy: 73.52%\n",
      "Thresh=0.009,n=21,accuracy: 73.58%\n",
      "Thresh=0.009,n=21,accuracy: 73.58%\n",
      "Thresh=0.010,n=19,accuracy: 73.59%\n",
      "Thresh=0.010,n=18,accuracy: 73.53%\n",
      "Thresh=0.011,n=17,accuracy: 73.41%\n",
      "Thresh=0.012,n=16,accuracy: 73.40%\n",
      "Thresh=0.014,n=15,accuracy: 73.18%\n",
      "Thresh=0.016,n=14,accuracy: 73.39%\n",
      "Thresh=0.019,n=13,accuracy: 73.27%\n",
      "Thresh=0.020,n=12,accuracy: 73.30%\n",
      "Thresh=0.022,n=11,accuracy: 73.12%\n",
      "Thresh=0.024,n=10,accuracy: 73.13%\n",
      "Thresh=0.028,n=9,accuracy: 73.02%\n",
      "Thresh=0.038,n=8,accuracy: 72.96%\n",
      "Thresh=0.048,n=7,accuracy: 72.77%\n",
      "Thresh=0.064,n=6,accuracy: 72.02%\n",
      "Thresh=0.074,n=5,accuracy: 71.87%\n",
      "Thresh=0.077,n=4,accuracy: 71.98%\n",
      "Thresh=0.081,n=3,accuracy: 71.20%\n",
      "Thresh=0.124,n=2,accuracy: 70.61%\n",
      "Thresh=0.148,n=1,accuracy: 70.05%\n"
     ]
    }
   ],
   "source": [
    "# 根据特征重要性进行特征选择\n",
    "\n",
    "from xgboost import XGBClassifier\n",
    "from sklearn.feature_selection import SelectFromModel\n",
    "\n",
    "thresholds = np.sort(model_XGB.feature_importances_)[-80:] # 227个特征中，只有71个特征的重要性不为0。为了减少运行时间，计算后面80个数。 \n",
    "for thresh in thresholds:\n",
    "    selection = SelectFromModel(model_XGB,threshold=thresh,prefit=True) \n",
    "    select_X_train = selection.transform(X_train)\n",
    "    \n",
    "    selection_model = XGBClassifier()\n",
    "    selection_model.fit(select_X_train,y_train)\n",
    "    \n",
    "    y_pred = selection_model.predict(select_X_train)\n",
    "    \n",
    "    predictions = [round(value) for value in y_pred]\n",
    "    accuracy = accuracy_score(y_train,predictions)\n",
    "    print('Thresh=%.3f,n=%d,accuracy: %.2f%%'%(thresh,select_X_train.shape[1],accuracy*100.0))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
       "       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=3, min_child_weight=1, missing=None, n_estimators=100,\n",
       "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n",
       "       silent=True, subsample=1)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用最佳阈值训练模型\n",
    "\n",
    "thresh = 0.020   # 从上面数据中选择\n",
    "selection = SelectFromModel(model_XGB, threshold=thresh, prefit=True)\n",
    "select_X_train = selection.transform(X_train)\n",
    "\n",
    "selection_model = XGBClassifier()\n",
    "selection_model.fit(select_X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "1) 用默认的xgboost对训练数据进行分类，用predict_proba()进行预测，把训练集的类别标签转化为二分类，得到的roc_auc_score=0.6890。    \n",
    "2) 用xgb.feature_importances_查看特征重要性，得到在227个输入特征中，只有71个输入特征的重要性不为0。因此大部分的输入特征对分类结果不起作用。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "--------------------------------------------------------------------------------------------\n",
    "# 3.  直接调用xgboost内嵌的cv寻找最佳的参数n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 71)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 上面特征重要性结果表明，在227个输入特征中，只有71个输入特征的重要性不为0，大部分的输入特征对分类结果不起作用。\n",
    "# 因此为了提高程序运行速度，只选取重要性不为0的61个输入特进行分类参数调优。\n",
    "\n",
    "Xcolumns = df[(df['importance']!=0)]['columns'].values\n",
    "X_train = X_train[Xcolumns]\n",
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 交叉验证\n",
    "\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "\n",
    "def modelfit (alg, X_train, y_train, cv_folds=kfold, early_stopping_rounds=20):    # alg = xgb1\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "    \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], \n",
    "                      folds =cv_folds, metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "    \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    n_estimators = cvresult.shape[0]              # 最佳参数n_estimators\n",
    "    alg.set_params(n_estimators = n_estimators)   #用交叉验证得到的最佳参数n_estimators训练模型\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "    \n",
    "    # 预测训练集的logloss\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "    \n",
    "    print('best n_estimators :',n_estimators)\n",
    "    print('min logloss of train :',logloss)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best n_estimators : 122\n",
      "min logloss of train : 0.4814710312674753\n"
     ]
    }
   ],
   "source": [
    "# 设置xgb的初始参数，调用上面函数求最佳的n_estimators\n",
    "\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,   \n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold) \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最小的test-mlogloss-mean : 0.6236740000000001\n",
      "最小的train-mlogloss-mean : 0.448496\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Log Loss')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEXCAYAAABCjVgAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XecFOX9wPHP9/YqVziqlKMJKE1ABFtMxI6Y2KIUo4lY0CQmpvhLME0lMdEUjS0iKlgjGkuCPWrslSIgvZejH9xxvezt9/fHM3e3d7fHLXDL3t5+36/Xvm5n5tmZ7+zAfPd5nplnRFUxxhhjABKiHYAxxpjWw5KCMcaYWpYUjDHG1LKkYIwxppYlBWOMMbUsKRhjjKllScGYICLyKxF5JNpxGBMtlhRijIhkiMhGEbksaF6miGwWkUuC5o0WkVdEJF9ECkRkuYjcLiIdvOVXiki1iBR7r/Ui8v0Ixz5WRHIjuY0DESoeVf2jql4Toe1tFJEzI7HuSDhcxyvWvpe2zpJCjFHVYmAqcI+IdPFm/xmYr6rPA4jIycB7wMfAIFXNBsYBfmBE0Oo+VdUMVc0ALgH+LCLHHp49MQdCRBKjHYOJE6pqrxh8AY8BzwBjgT1A96BlHwH3NfP5K4GPGsz7ArgsaPp8YBlQgEsyg4OWDfbmFXhlzg9aNh5YDhQBW4GbgHSgDAgAxd6rRxP79QDwqvf5z4H+YXwfg4C3gL3AKmDCwcQD3Ao85X2uL6DAFGALkA9cD4wBlnj7fn/QdvoD//OORx7wNJDtLXvS21aZt61fhPEdbwR+6W2rAkj0prd6+7IKOCPEd3EisAPwBc27CFjivT8emA8UAjuBu5r4TscCuU0saw88AewGNgG/ARK8ZT7gb953sAG4wfseE5tY10bgzCaWXQus9Y7r3Jp/M4AAdwO7gH3edzSsqeMd7f+vsfSKegD2OsgDBx2A7d5/vClB89OBamBsM5+/kqCk4J3oCoCjvOmjgBLgLCAJ+IX3nzPZm14L/MqbPt37D3i099ntwNeD4hzlvW/yJBMUx2PeCeB47yT4NDCnmc+k407aU7zPjPK+l6EHGg+hk8IMIBU4GygH/g10BXp6J6VTvfIDvO8rBegCfAD8PWjd9U5++/uOg8ovAnoBacDR3n72CIovZMIE1gFnBU3/C5jmvf8UuMJ7nwGc2MQ6mjxeuITwHyDTi2M1cLW37HrcSTnH+77f5iCSgvfvKs87ninAfcAH3rJzgAVANi5BDMb7YdTU8bZXeC9rPopRqpqP+4XZDngxaFEHXLPgjpoZIvJnr1+hRER+E1T2RG9+Ma6W8CSwxls2EXhVVd9S1Srgr7gT08m4X6IZwB2qWqmq/wNeASZ7n60ChohIlqrmq+rCA9y9F1X1C1X145LCyGbKfxPYqKqzVdXvbe8FXJNYS8Tze1UtV9X/4k7iz6jqLlXdCnwIHAugqmu976tCVXcDdwGn7me9+/uOa9yrqltUtQyX7FO8fUlS1Y2quq6JdT+DdzxEJBP36/mZoO9jgIh0VtViVf3sQL4MEfF5sd+sqkWquhFXM7jCKzIBuEdVc71/p3ccyPqDfAeYpaoLVbUCuBk4SUT6evuQiashiqquUNXtQft3KMc7rllSiFEicjnuF9rbwJ1Bi/JxzRTda2ao6i/U9Su8hPslXeMzVc1W16fQDRgK/NFb1gPXLFCzjgDuV2pPb9kWb16NTd4ygG/jTkKbROR9ETnpAHdvR9D7UlwC2p8+wAlegisQkQLcCaVbC8WzM+h9WYjpDAAR6Soic0Rkq4gUAk8Bnfez3v19xzW2BC1fC/wEV5vZ5W2rRxPr/idwsYikABcDC1W1ZltX42opK0Vknoh8cz8xhtIZV0PcFDQv+Pj3CI67wfsD0fD7KcY1zfX0fojcj2tq3CkiM0Ukyyt6qMc7rllSiEEi0hXXnnotcB0wQUS+AaCqJbh2+IsPZJ2quhP36/pb3qxtuJNtzTYF14yx1VvWS0SC//309pahqvNU9QJcE8u/gedqNnMgMR2ALcD7XoKreWWo6vcPczx/8tY5XFWzgMtxTRs1Gm5vf99xyM+o6j9V9RTvc0r9HwTB5ZbjTqjnApfhkkTNsjWqOhn3fdwJPC8i6eHvJnm4X+N9gubVHn9c801O0LJeB7DuYA2/n3SgE3X/zu5V1eNwP2aOAv7Pm9/U8TZhsKQQm+4H/q2q73pV5l8AD3u/CvGmrxKRaV4CQURygH5NrVBEOuE6I5d5s54DzhORM0QkCfg5rrPzE1zSKQF+ISJJIjIWl0zmiEiyiHxHRNp7TSKFuGYPcL+wO4lI+xb6Hmq8AhwlIld48SSJyBgRGXyY48nEdSIXiEhPvJNUkJ3AkUHT+/uOGxGRo0XkdO84l+NqKdWhynr+CfwY+AauT6FmPZeLSBevZlLgzW5yPSKSGvzC1USfA273LofuA/wMVzOq2a8bRaSniGTjOsebk9RgO4le/FNEZKS3z38EPlfVjd7xPcH73kq876O6meNtwhHtTg17HdgLuBD3Cyq7wfx3gNuDpk8AXsP9py8AlgK3A5285Vfi/rPUXHmzC9fm3DVoHRfhOgz3Ae/jddx6y4Z68/Z5ZS7y5icDb+CasQqBecApQZ+bhWsCKKDpq4/+EDQ9lmY6p71yR+OuWNrtrf9/uL6IA4qH0B3NiUHlcwnqxMedCH8T9J0s8L7PRbiTfG5Q2QuAzd62bgrjO95I/Y7p4bi+nyJcZ/wrob7DoPK9cSfwVxvMf8o73sW4HwEXNvH5sd7+N3wNwPVdPeV931uA31F39VEiria7B3f10U9xNQtpYjsbQ2zjD96y63Gd5jX7m+PNPwN3xVExdVd6ZTR3vO3V/Eu8L9gYYyJCRM4FZqhqn2YLm6iz5iNjTIsSkTQRGS8iiV4z2i24ixxMDLCagokJIvJ14PVQy9RdPWVaCRFph2sKG4Tr93gVuFFVC6MamAmLJQVjjDG1rPnIGGNMrZgbZKtz587at2/faIdhjDExZcGCBXmq2qW5cjGXFPr27cv8+fOjHYYxxsQUEdnUfClrPjLGGBPEkoIxxphalhSMMcbUirk+BWOMCVdVVRW5ubmUl5dHO5TDJjU1lZycHJKSkg7q85YUjDFtVm5uLpmZmfTt2xc3CG3bpqrs2bOH3Nxc+vVrcvzL/bLmI2NMm1VeXk6nTp3iIiEAiAidOnU6pJqRJQVjTJsWLwmhxqHub1wlhfIqG1bdGLN/Ex/6lIkPfRrtMKImbpLC2Dv+y7jfPUaF3xKDMebw2LNnDyNHjmTkyJF069aNnj171k5XVlaGvZ5Zs2axY8eO5gu2gLjpaH6w7/sMXnk/q7d/i6N6dY12OMaYONCpUycWLVoEwK233kpGRgY33XTTAa9n1qxZjBo1im7dujVf+BDFTU0hvccgAHZuXNZMSWOMibzHH3+c448/npEjR/KDH/yAQCCA3+/niiuu4JhjjmHYsGHce++9PPvssyxatIiJEycecA3jYMRNTaFLv2EAFG9dAZwW3WCMMYfdbS8vY/m25h/psHy7KxNOv8KQHlnc8q2hBxzL0qVLeemll/jkk09ITExk6tSpzJkzh/79+5OXl8dXX30FQEFBAdnZ2dx3333cf//9jBw58oC3daDiJimkHXEUAIG8NVGOxBgT795++23mzZvH6NGjASgrK6NXr16cc845rFq1ihtvvJHx48dz9tlnH/bY4iYpkJzOHl8X0go3RDsSY0wUhPuLvqaG8Ox1J0UsFlXlqquu4ve//32jZUuWLOH111/n3nvv5YUXXmDmzJkRiyOUuOlTACho15fOFZsJBOxpc8aY6DnzzDN57rnnyMvLA9xVSps3b2b37t2oKpdeeim33XYbCxcuBCAzM5OioqLDElv81BQAf4f+9C1cyraCUnI6pkc7HGNMnDrmmGO45ZZbOPPMMwkEAiQlJTFjxgx8Ph9XX301qoqIcOeddwIwZcoUrrnmGtLS0vjiiy9ITk6OWGxxlRRSjjiarM1lLN2yiZyOQ6IdjjEmjtx66631pi+77DIuu+yyRuW+/PLLRvMmTJjAhAkTIhVaPXGVFDr0GQLzIH/zMhhhScEY01gk+xJiQVz1KWT1HAxA5c5VUY7EGGNap4glBRGZJSK7RGRpE8tFRO4VkbUiskRERkUqltpttu9FBSkk5q+L9KaMMSYmRbKm8Bgwbj/LzwUGeq+pwIMRjMVJSGBPag7ZpRsjviljjIlFEUsKqvoBsHc/RS4AnlDnMyBbRLpHKp4a5VlHklO9lYLSyN4qbowxsSiafQo9gS1B07nevIiSzgPpJbtZv2N/+coYE7dmn+decSqaSSHUkyBC3lUmIlNFZL6IzN+9e/chbTSz52ASJcCOTSsPaT3GGNOclhg6e8qUKaxadfgujonmJam5QK+g6RxgW6iCqjoTmAkwevToQ7oduUNvd6v7ux9/yvjTxh7KqowxZr/CGTpbVVFVEhJC/0afPXt2xOMMFs2awlzgu95VSCcC+1R1e6Q36usyEIBR6XmR3pQxxoS0du1ahg0bxvXXX8+oUaPYvn07U6dOZfTo0QwdOpTp06fXlj3llFNYtGgRfr+f7Oxspk2bxogRIzjppJPYtWtXi8cWsZqCiDwDjAU6i0gucAuQBKCqM4DXgPHAWqAUmBKpWOpJzaKQDDLyl9feSm6MiQOvT4MdXzVfbscS9zecfoVux8C5dxxUOMuXL2f27NnMmDEDgDvuuIOOHTvi9/s57bTTuOSSSxgypP5Ntvv27ePUU0/ljjvu4Gc/+xmzZs1i2rRpB7X9pkQsKajq5GaWK/DDSG1/f4o6Daff7m3sKCyne/u0aIRgjIlz/fv3Z8yYMbXTzzzzDI8++ih+v59t27axfPnyRkkhLS2Nc889F4DjjjuODz/8sMXjiqthLmr4ug9jYN48Ptqyl+7tI37BkzGmNQj3F31NDWHKq5GLBUhPrxuUc82aNdxzzz188cUXZGdnc/nll1NeXt7oM8ED4fl8Pvx+f4vHFVfDXNTI7juSFKli2wZ7NKcxJvoKCwvJzMwkKyuL7du38+abb0YtlrisKaTmDAegPHcJcPifbGSMMcFGjRrFkCFDGDZsGEceeSRf+9rXohZLXCYFOh9FNT5S9iyPdiTGmDgRPHT2gAEDai9VBRARnnzyyZCf++ijj2rfFxQU1L6fNGkSkyZNavE44zMpJKZQ0K4vPYrWs6+sivZpSdGOyBjTWkS4L6G1i8s+BQB/l8EMStjCyu2F0Q7FGGNajbhNCum9RpAjeazevDXaoRhjIshd/R4/DnV/4zYpZPQeCcC+jYujHIkxJlJSU1PZs2dP3CQGVWXPnj2kpqYe9Dris08B4Ah3U4jstMtSjWmrcnJyyM3N5VAH0owlqamp5OTkHPTn4zcpZPWkkHSyi1ZT4a8mJdEX7YiMMS0sKSmJfv36RTuMmBK3zUeIsMHXl0EJm1m5vSja0RhjTKsQv0kBGJBSyFGSy5eb9kQ7FGOMaRXiOimkp6aQKWXkrreb2IwxBuI8KXDpLAACWxdGORBjjGkd4jspdB2CPyGF7iUr2VsS3qPxjDGmLYvvpOBLoqzjEIYnrGfRlvxoR2OMMVEX30kBSO1zHMNkA4uts9kYYywpJPUaTbpUsHNDGI/pM8aYNi7ukwI9RwGQuGMRgUB83ApvjDFNsaTQaQBVvnYc5V/D+rziaEdjjDFRZUkhwYf/iOEMT1jPl5sLmi9vjDFtmCUFILXPGAbLJu56Y2m0QzHGmKiypABIz1GkiJ/uFRuiHYoxxkSVJQWAHscCMCiwll2F5VEOxhhjoieiSUFExonIKhFZKyLTQizvIyLviMgSEXlPRA5+EPBD0aEvfklmpKzlsw17oxKCMca0BhFLCiLiAx4AzgWGAJNFZEiDYn8FnlDV4cB04E+Rime/REgYcDpjfKv5bL3dxGaMiV+RrCkcD6xV1fWqWgnMAS5oUGYI8I73/t0Qyw+bhD4n0U+2s3LtumiFYIwxURfJpNAT2BI0nevNC7YY+Lb3/iIgU0Q6RTCmpvU+CYAu+YusX8EYE7cimRQkxLyGtwzfBJwqIl8CpwJbAX+jFYlMFZH5IjI/Ys9a7TGSgC+F4xJWW7+CMSZuRTIp5AK9gqZzgG3BBVR1m6perKrHAr/25u1ruCJVnamqo1V1dJcuXSITbWIK0nMUJ1i/gjEmjkUyKcwDBopIPxFJBiYBc4MLiEhnEamJ4WZgVgTjaZb0Pokhsp7XFlq/gjEmPkUsKaiqH7gBeBNYATynqstEZLqInO8VGwusEpHVwBHA7ZGKJyy9TyKJagZVr2Gn9SsYY+JQYiRXrqqvAa81mPe7oPfPA89HMoYD0msMAYTRsor3V+9mwuhezX/GGGPaELujOVhaB6TrYL6WvIb3V0eoQ9sYY1oxSwoNSOlejtXlfLx6J/7qQLTDMcaYw8qSQkOp7Umlkl4Va1mca0NpG2PiiyWFhq58BYBTfEt5f5U1IRlj4oslhYYyukLXoYxrt4r3rF/BGBNnLCmEcuRYhlYtY1XubvKKK6IdjTHGHDaWFEI5ciyJWslxCauZ+NCn0Y7GGGMOG0sKofQ5GU1I5Ou+ZRSUVkU7GmOMOWwsKYSSkoHkjOEbicvIL62kvKo62hEZY8xhYUmhKUeOZYiuI0OL+cA6nI0xccKSQlOOHIugnJm2mteX7oh2NMYYc1hYUmhKz+NAfFwq7/L28p1U+K0JyRjT9llSaIovCVKzOZYVFFVU8dGavGhHZIwxEWdJYX/O+QOpgVJG+DbyyxeWRDsaY4yJOEsK+zPwHJAEzkteRH5pFZV+GyDPGNO2WVLYn/RO0OtEzpD5VAeU91btinZExhgTUZYUmjNoPP0DG+iTkMeLC7dGOxpjjIkoSwrNOXo8ADf338A7K3dSUFoZ5YCMMSZyLCk0p1N/6Hw0pwS+oKpaeXnxtmhHZIwxEWNJIRyVJaRv/YTRXYUXrAnJGNOGWVIIR7tOCMqPeqxi0ZYCzr/vo2hHZIwxEWFJIRzXvQ/ZfTix7H0Ae8aCMabNsqQQDhEYehEpmz+gT2o5u4oqbNgLY0ybZEkhXMMuBq3morQF+APKGzZInjGmDYpoUhCRcSKySkTWisi0EMt7i8i7IvKliCwRkfGRjOeQdBsOHftzY7el9OuczuOfbIx2RMYY0+IilhRExAc8AJwLDAEmi8iQBsV+AzynqscCk4B/RCqeQyYCwy5GNn7ItcdmsHBzAV/l7ot2VMYY06KaTQoi0l9EUrz3Y0XkxyKSHca6jwfWqup6Va0E5gAXNCijQJb3vj3Qum8CGHoxaICLvvo+CQJXPfZFtCMyxpgWFU5N4QWgWkQGAI8C/YB/hvG5nsCWoOlcb16wW4HLRSQXeA34UagVichUEZkvIvN3747iU9COGAJJ7Ugr207njBTySirZW2J3OBtj2o5wkkJAVf3ARcDfVfWnQPcwPich5mmD6cnAY6qaA4wHnhSRRjGp6kxVHa2qo7t06RLGpiMooytUFHFc+m5U4THrWzDGtCHhJIUqEZkMfA94xZuXFMbncoFeQdM5NG4euhp4DkBVPwVSgc5hrDt6rn4LEhIZV/UOHdol8djHGyiu8Ec7KmOMaRHhJIUpwEnA7aq6QUT6AU+F8bl5wEAR6SciybiO5LkNymwGzgAQkcG4pBDF9qEwZHSFo8ZxAe8z+3vHUlju55+fb4p2VMYY0yKaTQqqulxVf6yqz4hIByBTVe8I43N+4AbgTWAF7iqjZSIyXUTO94r9HLhWRBYDzwBXqmrDJqbW59jLoWQXI8vn87UBnfjLm6u49MFPoh2VMcYcssTmCojIe8D5XtlFwG4ReV9Vf9bcZ1X1NVwHcvC83wW9Xw587QBjjr4BZ0HGEfDlU/xw7D18vPZzdtvQF8aYNiCc5qP2qloIXAzMVtXjgDMjG1Yr50uEhERY+SonHeEnI8XHtoJyyqts6AtjTGwLJykkikh3YAJ1Hc0moxugyILH6dWhHZXVAZ74dGOUgzLGmEMTTlKYjusXWKeq80TkSGBNZMOKAVP/BwPPhvmP8voNJzL26C488O469pVVRTsyY4w5aOF0NP9LVYer6ve96fWq+u3IhxYDTrgOinfC8n/zi3MGsa+sinF//yDaURljzEELZ5iLHBF5SUR2ichOEXlBRHIOR3CtXv8zoPNR8NmDDOmeSaf0ZHYUlrOtoCzakRljzEEJp/loNu7+gh64YSpe9uYZETh+KmxbCA99g14d0hDg968sj3ZkxhhzUMJJCl1Udbaq+r3XY0CUx5poRUZMBvFB4TZSknz0yE7j9aU7eH91674HzxhjQgknKeSJyOUi4vNelwN7Ih1YzEjJgMzuUJrHs9/uwjs/P5UjO6cz9Yn5dkObMSbmhJMUrsJdjroD2A5cghv6wtSY+i4kpsLHfycl0cdtFwylwh9g277yaEdmjDEHJJyrjzar6vmq2kVVu6rqhbgb2UyNjK4w6ruweA7sy+XrA7vQKT2ZbQVlrNlZFO3ojDEmbAf75LVmh7iIOyf/CAJ+eOQsAPp0aocvQfjlC0uoDrT+4ZyMMQYOPimEelZCfMvuDeldoHgHFO/mxR98jb9cOpyFmws4/a/vRTs6Y4wJy8EmBfvpG0r7XqAB+PBvAFw4sifZaUlsyS9l3e7iKAdnjDHNazIpiEiRiBSGeBXh7lkwDSWludFT5z8K+ZsQEfp2TidBhGsfn8++UhsCwxjTujWZFFQ1U1WzQrwyVbXZIbfj0pRX4dp3AYH33CMnUhITOOqIDLbkl/L1P/+PCTPsMlVjTOtlJ/eW1r4nnDAVPrkPdq3g2eveA+DZeZv55QtfsWlvaXTjM8aY/TjYPgWzP6f8zN3lXLCxdtbEMb3plpXCzsIKnvx0Y1OfNMaYqLKkEAntOrpO57J8WPNW7ezeHduRnZbErS8v55y732fiQ59GMUhjjGnMkkKk3DAPOg2AN6aBvxKA564/mY+mnc7Arhms3VVCSYU/ykEaY0x94QydHeoqpC3ecNpHHo4gY1JiMpzzJ9izFh4YUzs7IyWRWVeOwZcgrNxRxPn3fWQ1BmNMqxFOTeEu4P9ww2bnADcBDwNzgFmRC60NOOpsSOsABVugaEft7B7ZaQzqngnAih2F9mxnY0yrEU5SGKeqD6lqkaoWqupMYLyqPgt0iHB8sa/Dke6Gttduqjd77g2n8PKPTiGgsGJHEZv2lDDxoU+t1mCMiapwkkJARCaISIL3mhC0zO5sbk5SGmT3gRUvw/L/1Fs0uHsWg7tlEggoEx76lLJKqzEYY6IrnKTwHeAKYJf3ugK4XETSgBsiGFvbMOVV+NEC6D4Cnr8aHjm73uL0lEQGd8+kOgDLtxdSUuG3GoMxJmqavXlNVdcD32pi8Uf7+6yIjAPuAXzAI6p6R4PldwOneZPtgK6qmt1cTDHHlwgXPAAzvg756+steva6kwBYt7uYc//+Icu3F9K/SwYd05OjEakxJs6Fc/VRjnel0S4R2SkiL4hIThif8wEPAOcCQ4DJIjIkuIyq/lRVR6rqSOA+4MWD240Y0O0YaJ8DJbthyXONFvfvksHQHlmkJftYs6uYbQVlqKrVGowxh1U4zUezgbm4QfB6Ai9785pzPLBWVderaiXuaqUL9lN+MvBMGOuNXe17Q0oWvPJT2LOu0eLkxASGdMuiY3oyW/LLuOlfSwioddsYYw4f0WZOOiKyyPslv995IT53Ce7KpWu86SuAE1S1UT+EiPQBPgNyVLVRb6uITAWmAvTu3fu4TZs27X+vWrN9ufDg19wDeboNh6teb1RkwoxP2FpQztaCMjJSEhnYNYPkRJe/a5qbjDHmQIjIAlUd3Vy5cGoKeSJyuYj4vNflwJ5wYggxr6kMNAl4PlRCAFDVmao6WlVHd+nSJYxNt2Ltc1z/QmUx5G8IWUREyOmQxv2XHUtppZ8lW/exp7iC5hK4McYcqnBGSb0KuB+4G3dS/wSYEsbncoFeQdM5wLYmyk4CfhjGOtuGwd+EzB5QtA2W/AuGX1pvcXBtYOYH61m/u5i1u0voUFLJjn3l3Djny0bljDGmJTRbU1DVzap6vqp2UdWuqnohcHEY654HDBSRfiKSjDvxz21YSESOxt0EF1+9qT9ZAr1PgpemwkNjmyyWluRjSPcsenVIo6CsijP+9h7b95VbJ7QxJiIOdkC8nzVXQFX9uPsY3gRWAM+p6jIRmS4i5wcVnQzM0XhrG/ElwSWz3RDbu1dA6d6QxZ697iSeu/5kemSnMbxne8b068jmvaUs3VZIUXndk9wsQRhjWsLBJoVQ/QWNqOprqnqUqvZX1du9eb9T1blBZW5V1WkHGUdsy+oOXQaDvwKe+27taKpNSU3yMfvKMQzsmoG/Wlm+vYh1u4vZEvTgHksOxphDcbBPXouvX/WR9P0PYfEceOk6+Psw6DgArnqtUbHg/oOO6cm0T0tia0EZOwrLOe2v79ExPZluWamkJftqy9UkB+t7MMaEq8mkICJFhD75C5AWsYji0YhJkLcGPvwr+Jq/k7nmJD/xoU/plpXKMTntefLTTewqqiAzJZEumSn1xlGy5GCMCVeTSUFVMw9nIHHvtF/Dwidg3xb4+wh36eqUV5v9WHJiAtMvGMZXufvIK65gd1EF6/NKOP6Pb9MuyUfXrBTaJdcd5oZNS5YojDHBDrb5yLS0hAT4+Up48VpY+gJI8909wSf05MQEemSn0b19KkXlfo7qlsncxdvYGVR72FNcEXI9VpMwxtSwx3G2Jgk+uOghSOvkBs5b+ETYH332upN49rqTEBGy0pK4Z9KxHNsrm94d06isDrA+r4TRt7/N0q372FZQRqU/0GgdwZ3U1mFtTHyymkJr40uCLkfDrhUw98fwyX2Q3jWspiSo/2s/yZdA9/ZpdMtKpaSymnFDu/HQB+vYkl/GlvwyslITmf3xBsqrqklN8oVcn9UijIkvlhRao6teh6oyePpS2PghHOItHCJCRkoiPzpjIB+tzaO8qprdxRXsLanktpeXA9Au2UfH9GQ6tktucjgN648wpu2zpNBaJaXB5Dlw9xDYswbuHuZGWQ1JjUqQAAAcqklEQVRxuWpTgq9SCpaa5KNXh3b06tCOO749nO/N+py9JVXk5peRm1/GKXe+S6U/QPu0RNqnJZHoa7qVMVSisNqFMbHLkkJrlpIBXYfCnrXuqiR/OVSVQ1LqAa0m+OTcMFH065xO9/ZpdG+fRoW/moLSKgZ1y+KtFTvZ7XVMpyf7uHXuMvKKK8hISSQlMQGR5u9fDE4OliiMiQ2WFFq7q153zUf3jICCTfD4NwFx9zOE2c8QrpREH0dk+ZhxxXFMmPEJxRV+9pVVUVju59l5Wyircvc+JPlcc9QjH66nqNxPerKPhISwbnIPmShqWMIwJvosKcQCEWjfCxLTYOcyCFS74TEOwf5qD26TQmZqEpmpSQA8fc0JXPjAxxRX+Ckq91Nc4ecPr65wZYG0ZB/pyYn88/PNlFT4SUv2kRBGbaKh/TVHhYrdGNOyLCnEippawfbF8MhZsHMJ3DcaMo5osRrD/k62ib4E0lMSSU9J5IgsN+++ycfynUc+p7jCT2mln/zSSn710ldAXaJIS/LxwLtryS+tpF2Sj+Qwm56a01yNwxKJMQfHkkKs6T4Cuo+EvJWuA7qi6KD6GZrTVCd1sK5Zqe6KpXQ3NIeq8pdLR3DVY/MoraymrLKaonI/f3lzVe1nEsRd6XTjnC/ZsreUlMQEkr1XQWklqtoiSSOUcJPHgSYZ6y8xbYklhVh0zX+h2g/3DIfCrfDIGa6PIaldi/czNNfMFExE6NMpnc4ZKfXmP/y90Ux66FPKKqspraymtKqahZvz2bavvF65kdPfIkHc/RVJvgSSfcLvX1nO9n3lpCQmuFdS67nfMtT30NKJp6WTVnMJrC0nOKs9hseSQqzyJUKHfpDaHoq2Q1m+mw4E3JAZEXSg/5myvL6Jmv6JmnVMmPEJldVKpb+aympl8vG9efiD9VRVB6iqDlBaVc0/P99c28FdY/itb+IPKEk+4fonF7BudzHJiQmkJPpISUxg9c4i/NUBfAkSsVpHLNhfLa+5RHEwzXOtfV4oLbGNw71PkU5mlhRiWU2toHA7/ONE2LsO7uwDnQbC1P8dlhAO5R+oiJCSKKQkuiR29Sn9+O+yHfXKzJl6It9+8BMq/QHK/QEqqqo5bVBX5i7ahj8QYENeCYVlfiqr64btOPvuD9z68WodicIPnl7Apj0lJPkSSPQJiQkJfLpuDyUVftchLm7Ml32lVRFtwjKmtbOk0BZkdXf3M5TscmMmbVsIH94Fa95yA+u1cJNSc1ryl4yI1DYnpXutUtMvGMaqHUW125r40KcEVKn0B6j0B/jBaQP4y5uramsclf4AK3cUsauogkDQzdqTH/6s0fZGTP8v4Po+fAmCL0GYPPMz1u4qJkEAEQT442sryM0vRfASisCTn21id1EFCUJtUnlz2Q72llTi5R1EhM/W76GovMqtXwSfL6HJu8iNOdwsKbQVNXc6P3wW5K+Dd26DpHToNCC6cXlCJYpwOrPDlSBCapKP1CQf3xrRg6c+29RoWxMf+pTqgOIPBPBXK78aP5hb5i5DVVEgoHD5iX2Y9dEGAqpUB9QlleoAxRV+At6JWxWe/HRTo2at3/57aaO4rntyQaN5k2Y2TkaDfvsGiksuAIJw8T8+Zt3uEqR2HvxkzpdsyCshQQRfgtvvOV9sZm9JJQkiiJegFmzKp7jCDwrqPRZl0ZYCSir83vpc2W0FZVRVBxARSir8VAe03vYq/YHa/a6pO1UHtDaJWY2q7bGk0NYkJrt7GE68Hp6/CnYshr8Nguw+cPWb0Y4upFCd2ZHifv37SEmEkwd0rr1yqkaoJqym2ngnzPjEnW4VAsCDl4/i2sfno96JWBXuvGQ4v3x+CeCSjqL89rwh3PbyMgIK/oBSHQgwblh3XliQW/tUK1WlXXIi/upA0DxYuLmAvSWVBFRraz3TXvyq0X5++8FPGs278IGPG807+Y66ZsahtzT+93HUb15vNK//r+qGWvHyC0N/9wbl/oCrYYmQkOCS2tpdxbVJCODK2V+wckdRbU0sQYSbX1zC+t0l1KQvVfjF84vZkFdSW8MC+N1/lrIhrwSgtjZ211ur2VpQ5n1Bbg13v7Wa3PzS2nUB3P7qcjbtKam3H396fQVb8ku9BOtqbf9ZtJW9JZU1qwPg9a+219b2avbk3VW7KCitRERYsCmfEu9HQ0AhoMr/Vu4kv7TSTQfcfs35YjO7CssRb3si8O5Kt546wvyNeymp8NeLYcX2Qsqqqknaz5AzLcWSQlsT3FTUY5S7C7poO5TkwUd3w6o3ICHxsDcpHYr91TKC3x/uob7Fa0qq6Y/ompnaaLTZoT3ak55S/7/ZyQM6k92ufjL61fjBLN5SUG/eU9ecsN8OR/VOQvdMPpbrnphPQNVLSDDt3EH88bUVQQ9Tl9p5LpG5E9XUbxzJP95dh6JcfmIfnvx0U93jFhUmn9CbZ77YXDutwMQxvXh23hagbnvjj+nOK0u2EQi4k2K1l9QCilercAXzSyrxVwdqT54BVd5esYuCskrEq70AfLA6j70llbVJV1FeXryN4go/6n1WFe59Z02j43JP0Lya4/P055spr6rGO2IoyuyPNzYaQv7GOYsare/7Ty9sNG/K7Hm170Ml4Ksem99oXqjkPeWxeY3mXTKj8b/jc+/5EIC+ndo1WtbSLCm0ZTU1gxmnQsFGePtWlxDa93Z3RSeEHi47Vh3OGkdrICL4BHpmpzVKPGOP7sqD762rN++0QV2Z8X79eRPH9ObFhVsBmPqN/ryzYle95T88bQAfrN5db96PzxjIx2vz6s377TeHsHTrvnrzmktqLTFvztQTmeDNq0mAz11/ctjrmzDjE1Sh2msuvGviSH4y58t65f58yQj+71+LAbzah/KHi47hty8tJYDyy3GDuP3VFbW1HxHhjxcdw69e+ooEcU18Ajx4xXF8/6mFqLctBf5w4TB+/dLS2tgV5ebxg5n+8nKvD8pt82dnHcVf3lzV6DhHgiWFeJCSAUcMg7Omw1MXu87oO3pDxwFw/fvRju6waa7G0XCePWSo9RORgxpOJfjzIpCAkOSD/l0y6j2+FmBw96xGJ+NRvTuQkermhUrAI3plk9HgM93bp9VeaVfj2N4dyEytX+7rA7s0atYcN6w7sz/eeMD7dzAsKcSD4KairkOhNA/2rocdi2DOd6Ag1yWOGGpSOhyaq3m0xDxLPKa1saQQb2quUnr0HHc39IYPoWIfpHWAh06FZEsOh1NLJR5jWkpEk4KIjAPuAXzAI6p6R4gyE4BbcU1ni1X1skjGZDw1/Q3l+2DG16EwF7Yvcs+H3vQJvPMH16BpCSImtFRNJlI1olDzrJbUOkmkbpoRER+wGjgLyAXmAZNVdXlQmYHAc8DpqpovIl1VdVfIFXpGjx6t8+c37tk3h2D2eRDwu5pD0Xb3PikdsnpAepeo3ABnjGlZIrJAVUc3Vy6SF70eD6xV1fWqWgnMAS5oUOZa4AFVzQdoLiGYCJnyqqs5ZPeBnmPgW/cA6kZh3TrPPfWtJM8lj9nnRTtaY0wERbL5qCewJWg6FzihQZmjAETkY1wT062q+kbDFYnIVGAqQO/evSMSrKF+bWDxc1Be4GoPBZvgriFu8L3MHnWJwWoPxrQ5kUwKoa4Ta9hWlQgMBMYCOcCHIjJMVevdxaOqM4GZ4JqPWj5U00hNh/Ts86CqFHqOgvmz3PhKKZmQ0R0qS+HpS105SxDGtAmRTAq5QK+g6RxgW4gyn6lqFbBBRFbhkkTj2/xMdASf7HcsheKdrt9hz2r460BISoP0rjDrXOt7MKYNiGRSmAcMFJF+wFZgEtDwyqJ/A5OBx0SkM645aX0EYzKHouaKpVnj3WWsPUfBoqehZLe7U7pdZ9jxFbw+zZWzBGFMzIlYUlBVv4jcALyJ6y+YparLRGQ6MF9V53rLzhaR5UA18H+quidSMZkWclXdgGjkrXUP+CnJc01LM06BlCz37OhHz4m5cZaMiXcRuyQ1UuyS1FZq9nnuEaFDvgX/+z34y11zUlonuORReO9Ou+/BmCgK95JUu6PZtIzgk/3K16CiyNUcSnfDE+dDYqqrPTx8hntvycGYVsmSgml5wVcudegHY66CV29yl7YWbHLNS/MehcXPgi/JEoQxrYg1H5nDY/Z5rkmpeJfrmPZ7D0ZJzXYd1O06wTX/jW6MxrRh1nxkWpea2sDs86B9Lxj/Z/jnRG/E1rXu9dg3Yd9WlyASU+p/zhhzWFhSMIdX8Em+Q183tEZVCZTscbWI/PXulZzhksPmz93DgeweCGMOC2s+MtEXPGzGzNOgdI97VRZ7BcT1Q6R1gLRsmPqeq1XUfMYY0yxrPjKxI/jEPvVd93f2eVBdCV+7EV77PzcOU8FGKADuGeFGck3rCP4KePLixusxxhwUqymY1q+mJuGvhLK90OlIWPMWoO7yVl+Kq0GkdoDkdHf1kw3aZ0w9rWHobGNaxpRX3SsxGTK7wXf+Bb1OgC6DYfTVrtZQsMk9XjT3C/j3D1wHdsBvw30bc4Cs+cjEjuBf/QmJriN63B9h+2LX1FRW4IbcWPmKe6Ic1PVF7FoBr/zc3VUdan3GGMCSgolVwSf04MtdM7rCd//tOqzLCqA839Ui/nGia2pKzXaJIjWr7jMN12dMHLOkYNqO4BN7anv3oo/rizh2Mrwz3d04V7zDlblnBFSWuQQx83SXNKw/wsQ5SwqmbQp1Qv/qBVB190WU74MjhsLqN6Bkp1uekATPXgGF21yimDXeBvEzcceSgokfwc1MyRkw6Wl34q8qdQP4VRTC9kVQsNmVS/BBSntY+AQsfBJ8yY3XZUwbY0nBxJ/gE3rw4H2Z3dyyh8+A8kL3IKGyApj7I1cmKd3VIFKzXRL556Sm12tMjLKkYAzUP6EnpkJGquu0VoXxd8Kc77gmp5rHkd7ZD5LauSSRnOFe0PjyV0sUJsZYUjCmoVAn8va93EsDrplpwBnwxSOwb0tdmbuGupFgU7Ncs1NSOzffOq5NDLGkYEw4gvsjUrPhrOmQuwAC1XV9Ej1GwMpX3Y1zAOKDJy50l8QmZ8LDZ7p+CbvCybRiNsyFMYcq+AQ/azxUV3h9EoWQ3gV2flVXNiER+p0Keatdk1NKpksUU161RGEiKtxhLiwpGBMJwSf4R8dBZYm7FLay2EsUS+vKJqbC8Imw+TN3Y13wsyQsUZgWYqOkGhNN9Ybk8HlXLWXVLXt0nEsQNZfCLnvJ/QVXc0jOgI/+7mocKRmWHMxhY0nBmEgLdSJP8AXddQ189z/w8OkuSVQWub9v3+IVlrqmpmUvwScP1NUmmlq/MQfJkoIx0RDqRJ6S6V41Lp0Nj3/Lq00UueE5/nWlW1ZTm0jOgBUvw4d3u2aomgH/rOnJHCRLCsa0FqFO3u06uxe4y2HPuR2ev8o1PVUWu+dLPHu5Wy4+19SUnOmugqqudMnDkoM5ABFNCiIyDrgH8AGPqOodDZZfCfwF2OrNul9VH4lkTMbElFAn8qyede8D1TDudnhhal2iKNwKcy5zy30pXtNTBqz+L7z/F/Al1a9RGBMkYklBRHzAA8BZQC4wT0TmquryBkWfVdUbIhWHMW1OqBN5Zre694FqOOs2eOk6qCh2fRRle+Cfl7rlCUl1iWLFy65D25dS//6J/W3LtGmRrCkcD6xV1fUAIjIHuABomBSMMYeq2RqFH868Bf79w7oaxb78uqanBB/MOhf2boDkdpCU5sZ6Amt+ijORTAo9gaAxAMgFTghR7tsi8g1gNfBTVd3SsICITAWmAvTu3TsCoRrTBoVMFD3q3geqXR/Fi9e6+yi0Gkp2QXF1XZm/HgX+ClezuP8EV7u45m147JtNb8PEtEgmBQkxr+Gdci8Dz6hqhYhcDzwOnN7oQ6ozgZngbl5r6UCNiRshm5661y2bNd51UFeVulfvk2D5f1w/Rc1/3zv6uPfJGXDfaEhOh6vegKcuaX5bptWLZFLIBXoFTecA24ILqOqeoMmHgTsjGI8xJpSmhhJP6wAXPeieL6EBV5uoLIYjx8JXz7lLZDXgyt/e3d07kZzuXSqb6UaVfeayprdlWqVIJoV5wEAR6Ye7umgSUO9fiIh0V9Xt3uT5wIoIxmOMCVdTz8BOyYRv3gW7V3lPsStzw3cMvQjmPeKSRqn3W++OPl7fRDt3D0VSGuTOhzd/7caACrUtE3URSwqq6heRG4A3cZekzlLVZSIyHZivqnOBH4vI+YAf2AtcGal4jDGHKFSiCLbxI/e32u+ueBp6IXz2Dy9ReCPHPnKG++tLrksY82fBvNmug7smWViiiBobEM8YEzk1Vy5pwHVYf+Pn8MbNXg2j1P3VoI5tn9cENeYaWD7Xva+5U9vu0j4kNkqqMaZ1Cr4XQhUungFPT/RGkS11f/0VdclCfK5GMfRCVxtJSnfJwpdkieIAWFIwxsSemhP85c/Do+cEDTleCr7Euv4KcE1QA85yw5AnefdWJKbCVa9bogjBkoIxpm0IPsE/cpZLEJXFLmGkZcOeNUGFBY4YCsW7XKJIbuf+Xv2WG1wwWJwlDHuegjGmbQg+eV/zlvtb7yFG53h9FF4/RWZ392S7kl11n7u9G0hCXed2UhpsXwyvT3PzQ20rTllNwRjTNgQnitnnQXVV3U14g8bDl0+Dv9wlj+D7aJPa1Q1DfsH98PZ011RVo40kCms+MsaYhokCvCuhyuHkH8F/f1t3U16gqu5zvuS6GsXXfw7zZ7v3vpS6K6FijCUFY4xpTm2iUDe8x9hp8OrP62oYDS+ZlQTXmT3wbNi6wCWOi2e6ZqgEX125Vpg0rE/BGGOaE+rk3T6n7r0qXDrLjetUVQZ+r99i+2LY543dOfNU9zchCZJSITENPrwLljxXd0WUJMTM5bNWUzDGmHAFn9RnnesSxSk/gbd+5/VXlLvEUV1Z/3O+FOh9ohseJDHVG/YjFaa8Dk9fWrfOCLLmI2OMOdxqksbkZ9zw4jW1C385ZPeB7Yvcsy1qidd/kVqXLM75I3z4t7oaBrRIwrCkYIwxrUHDzu6Av+4qqGMugc9numl/ef3ObnA1jMRUV27du+6+jKnvHlQY1qdgjDGtQXMDCa5/v+59wA/j/ggvXl+XKKrKYOnzbihyGRDxcC0pGGNMNIVKFD+a5/7W1DKufAUePbv+jXYRYknBGGNaq1B3c0dY5NOOMcaYmGFJwRhjTC1LCsYYY2pZUjDGGFPLkoIxxphalhSMMcbUsqRgjDGmliUFY4wxtSwpGGOMqRVzA+KJyG5g00F+vDOQ14LhRFNb2Rfbj9anreyL7Ud9fVS1S3OFYi4pHAoRmR/OKIGxoK3si+1H69NW9sX24+BY85ExxphalhSMMcbUirekMDPaAbSgtrIvth+tT1vZF9uPgxBXfQrGGGP2L95qCsYYY/bDkoIxxphacZMURGSciKwSkbUiMi3a8YRLRHqJyLsiskJElonIjd78jiLylois8f52iHas4RARn4h8KSKveNP9RORzbz+eFZHkaMcYDhHJFpHnRWSld2xOisVjIiI/9f5dLRWRZ0QkNVaOiYjMEpFdIrI0aF7IYyDOvd7//yUiMip6kdfXxH78xfu3tUREXhKR7KBlN3v7sUpEzmnpeOIiKYiID3gAOBcYAkwWkSHRjSpsfuDnqjoYOBH4oRf7NOAdVR0IvONNx4IbgRVB03cCd3v7kQ9cHZWoDtw9wBuqOggYgdunmDomItIT+DEwWlWHAT5gErFzTB4DxjWY19QxOBcY6L2mAg8ephjD8RiN9+MtYJiqDgdWAzcDeP/3JwFDvc/8wzu/tZi4SArA8cBaVV2vqpXAHOCCKMcUFlXdrqoLvfdFuJNPT1z8j3vFHgcujE6E4RORHOA84BFvWoDTgee9IrGyH1nAN4BHAVS1UlULiMFjgntOe5qIJALtgO3EyDFR1Q+AvQ1mN3UMLgCeUOczIFtEuh+eSPcv1H6o6n9V1e9NfgbkeO8vAOaoaoWqbgDW4s5vLSZekkJPYEvQdK43L6aISF/gWOBz4AhV3Q4ucQBdoxdZ2P4O/AIIeNOdgIKgf/yxclyOBHYDs72msEdEJJ0YOyaquhX4K7AZlwz2AQuIzWNSo6ljEMvngKuA1733Ed+PeEkKEmJeTF2LKyIZwAvAT1S1MNrxHCgR+SawS1UXBM8OUTQWjksiMAp4UFWPBUpo5U1FoXjt7RcA/YAeQDqumaWhWDgmzYnJf2si8mtcE/LTNbNCFGvR/YiXpJAL9AqazgG2RSmWAyYiSbiE8LSqvujN3llT/fX+7opWfGH6GnC+iGzENd+djqs5ZHtNFxA7xyUXyFXVz73p53FJItaOyZnABlXdrapVwIvAycTmManR1DGIuXOAiHwP+CbwHa27oSzi+xEvSWEeMNC7qiIZ11EzN8oxhcVrd38UWKGqdwUtmgt8z3v/PeA/hzu2A6GqN6tqjqr2xX3//1PV7wDvApd4xVr9fgCo6g5gi4gc7c06A1hOjB0TXLPRiSLSzvt3VrMfMXdMgjR1DOYC3/WuQjoR2FfTzNQaicg44JfA+apaGrRoLjBJRFJEpB+u4/yLFt24qsbFCxiP68VfB/w62vEcQNyn4KqHS4BF3ms8rj3+HWCN97djtGM9gH0aC7zivT/S+0e9FvgXkBLt+MLch5HAfO+4/BvoEIvHBLgNWAksBZ4EUmLlmADP4PpCqnC/oK9u6hjgml0e8P7/f4W74irq+7Cf/ViL6zuo+T8/I6j8r739WAWc29Lx2DAXxhhjasVL85ExxpgwWFIwxhhTy5KCMcaYWpYUjDHG1LKkYIwxppYlBWOMMbUsKRgTBhEZKSLjg6bPb6kh2EXkJyLSriXWZcyhsvsUjAmDiFyJu+Hphgise6O37rwD+IxPVatbOhZjrKZg2hQR6es99OZh7+Ex/xWRtCbK9heRN0RkgYh8KCKDvPmXeg+dWSwiH3hDo0wHJorIIhGZKCJXisj9XvnHRORBcQ9DWi8ip3oPTlkhIo8Fbe9BEZnvxXWbN+/HuMHo3hWRd715k0XkKy+GO4M+Xywi00Xkc+AkEblDRJZ7D2L5a2S+URN3on2Lt73s1ZIvoC9uVMmR3vRzwOVNlH0HGOi9PwE3HhO4YRB6eu+zvb9XAvcHfbZ2GveQlDm4oRQuAAqBY3A/uhYExVIz5IIPeA8Y7k1vBDp773vgxiTqghuN9X/Ahd4yBSbUrAs3zIEEx2kvex3qy2oKpi3aoKqLvPcLcImiHm8o8pOBf4nIIuAhoOahKx8Dj4nItbgTeDheVlXFJZSdqvqVqgaAZUHbnyAiC4EvcU/OCvX0vzHAe+pGLq0ZMvkb3rJq3Gi54BJPOfCIiFwMlDZakzEHIbH5IsbEnIqg99VAqOajBNzDZEY2XKCq14vICbinxC0SkUZl9rPNQIPtB4BEb0TLm4AxqprvNSulhlhPqPHya5Sr14+gqn4ROR43sukk4AbccOTGHBKrKZi4pO5BRRtE5FKofbD7CO99f1X9XFV/B+Thxq8vAjIPYZNZuIfx7BORI6j/MJvgdX8OnCoinb1n704G3m+4Mq+m015VXwN+ghu11ZhDZjUFE8++AzwoIr8BknD9AouBv4jIQNyv9ne8eZuBaV5T058OdEOqulhEvsQ1J63HNVHVmAm8LiLbVfU0EbkZ90wDAV5T1VDPM8gE/iMiqV65nx5oTMaEYpekGmOMqWXNR8YYY2pZ85Fp80TkAdwzooPdo6qzoxGPMa2ZNR8ZY4ypZc1HxhhjallSMMYYU8uSgjHGmFqWFIwxxtT6f/aWpIh4BMqUAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb2f32b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画图 n_estimators与Log Loss的关系\n",
    "\n",
    "cvresult = pd.read_csv('1_nestimators.csv')  \n",
    "\n",
    "print('最小的test-mlogloss-mean :',cvresult['test-mlogloss-mean'].values[-1])  \n",
    "print('最小的train-mlogloss-mean :',cvresult['train-mlogloss-mean'].values[-1])  \n",
    "\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "\n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.legend()\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：  \n",
    "1) 直接调用xgboost内嵌的cv找到的最佳的参数n_estimators=122。      \n",
    "2) 最小交叉验证测试误差：0.6237，训练误差: 0.4485。两者差异较大。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "--------------------------------------------------------------------------------------------\n",
    "# 4.  调整树的参数：max_depth & min_child_weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [3, 5, 7, 9], 'min_child_weight': [1, 3, 5]}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置max_depth和min_child_weight的范围 \n",
    "\n",
    "max_depth = [i for i in range(3,10,2)]\n",
    "min_child_weight = [i for i in range(1,6,2)]\n",
    "\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([mean: -0.62666, std: 0.00295, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.62705, std: 0.00264, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.62816, std: 0.00350, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.62675, std: 0.00658, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.62658, std: 0.00546, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.62685, std: 0.00356, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.63793, std: 0.01018, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.63588, std: 0.00841, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.63193, std: 0.00702, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.65582, std: 0.01137, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.64638, std: 0.00985, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.63771, std: 0.01008, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 5, 'min_child_weight': 3},\n",
       " -0.6265826640208368)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置xgb的参数，n_estimators为第一轮参数调整得到的最优值 \n",
    "\n",
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=122,                 # 第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3) \n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_,    gsearch2_1.best_params_,  gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best score is -0.626583 by using parameters of {'max_depth': 5, 'min_child_weight': 3}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Log Loss')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb2f3dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 结果汇总\n",
    "\n",
    "print(\"Best score is %f by using parameters of %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('maxdepth_minchildweights_1.csv')\n",
    "\n",
    "# 数据转化为矩阵，行对应于max_depth，列对应于min_child_weight\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "#  画图: max_depth与Log Loss的关系\n",
    "fig = plt.figure(figsize=(12,5))\n",
    "plt.subplot(121)\n",
    "for i, value in enumerate(min_child_weight):\n",
    "#    plt.plot(max_depth, -train_scores[:,i], label= 'train - min_child_weight: '   + str(value))\n",
    "    plt.plot(max_depth, -test_scores[:,i], label= 'test - min_child_weight: '   + str(value))\n",
    "plt.legend()\n",
    "plt.xlabel('max_depth')                                                                                                      \n",
    "plt.ylabel('Log Loss')\n",
    "\n",
    "#  画图: min_child_weight与Log Loss的关系\n",
    "plt.subplot(122)\n",
    "for i, value in enumerate(max_depth):\n",
    "#    plt.plot(min_child_weight, -train_scores[i], label= 'train - max_depth: '   + str(value))\n",
    "    plt.plot(min_child_weight, -test_scores[i], label= 'test - max_depth: '   + str(value))   \n",
    "plt.legend()\n",
    "plt.xlabel( 'min_child_weight' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：    \n",
    "1) 对树参数max_depth 和 min_child_weight进行优化，在max_depth=5和min_child_weight=3的情况下，得到的最小交叉验证测试误差为：0.6266。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----------------------------------------------------------------------------------\n",
    "# 5.  调整max_depth和min_child_weight之后再次调整n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 基于上面的优化参数max_depth和min_child_weight，再次优化n_estimators \n",
    "\n",
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        cvresult.to_csv('2_nestimators.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "         \n",
    "           \n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')    \n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "    \n",
    "    print('best n_estimators :',n_estimators)\n",
    "    print('min logloss of train :',logloss)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best n_estimators : 122\n",
      "min logloss of train : 0.49577539351540617\n"
     ]
    }
   ],
   "source": [
    "# 设置xgb的参数，n_estimators为第一轮参数调整得到的最优值 \n",
    "\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=122,   \n",
    "        max_depth=5,\n",
    "        min_child_weight=3,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最小的test-mlogloss-mean : 0.6272159999999999\n",
      "最小的train-mlogloss-mean : 0.4681566666666667\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Log Loss')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb4ed908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画图 n_estimators与Log Loss的关系\n",
    "\n",
    "cvresult = pd.read_csv('2_nestimators.csv')  \n",
    "\n",
    "print('最小的test-mlogloss-mean :',cvresult['test-mlogloss-mean'].values[-1])  \n",
    "print('最小的train-mlogloss-mean :',cvresult['train-mlogloss-mean'].values[-1])\n",
    "\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "\n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.legend()\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "1) 用优化的树参数max_depth=5和min_child_weight=3再次对训练集优化n_estimators，得到的最佳参数n_estimators=122(与第一次一样)。   \n",
    "2) 最小交叉验证测试误差：0.6272，训练误差: 0.4682。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "------------------------------------------------------------------------------------------\n",
    "# 6.  调整树的参数：subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置subsample和colsample的范围\n",
    "\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([mean: -0.62397, std: 0.00368, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.62197, std: 0.00698, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.61779, std: 0.00540, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.61776, std: 0.00370, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.61809, std: 0.00574, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.61609, std: 0.00386, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.62503, std: 0.00478, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.62102, std: 0.00569, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.61890, std: 0.00505, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.61769, std: 0.00731, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.61757, std: 0.00498, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.61692, std: 0.00551, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.62658, std: 0.00546, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.62190, std: 0.00558, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.61982, std: 0.00601, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.61923, std: 0.00669, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.61734, std: 0.00502, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.61714, std: 0.00743, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.62438, std: 0.00432, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.62048, std: 0.00662, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.62045, std: 0.00712, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.61858, std: 0.00557, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.61709, std: 0.00595, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.61705, std: 0.00539, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       " -0.6160900429018424)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置xgb的参数，n_estimators,max_depth,min_child_weight为前两步参数调整得到的最优值 \n",
    "\n",
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=122,   \n",
    "        max_depth=5,\n",
    "        min_child_weight=3,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best score is -0.616090 by using parameters of {'colsample_bytree': 0.6, 'subsample': 0.8}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Log Loss')"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb936198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 结果汇总\n",
    "\n",
    "print(\"Best score is %f by using parameters of %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('subsample_colsample_1.csv')\n",
    "\n",
    "# 数据转化为矩阵，行对应于colsample_bytree，列对应于subsample\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "#  画图: subsample与Log Loss的关系的关系\n",
    "fig = plt.figure(figsize=(12,5))\n",
    "plt.subplot(121)\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "#    plt.plot(subsample, -train_scores[i], label= 'train-colsample:'   + str(value))\n",
    "    plt.plot(subsample, -test_scores[i], label= 'test-colsample:'   + str(value))    \n",
    "plt.legend()\n",
    "plt.xlabel('subsample')                                                                                                      \n",
    "plt.ylabel('Log Loss')\n",
    "\n",
    "#  画图: colsample_bytree与Log Loss的关系\n",
    "plt.subplot(122)\n",
    "for i, value in enumerate(subsample):\n",
    "#    plt.plot(colsample_bytree, -train_scores[:,i], label= 'train-subsample:'   + str(value))\n",
    "    plt.plot(colsample_bytree, -test_scores[:,i], label= 'test-subsample:'   + str(value))    \n",
    "plt.legend()\n",
    "plt.xlabel('colsample_bytree')                                                                                                      \n",
    "plt.ylabel('Log Loss')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "1) 对行列采样参数subsample 和colsample_bytree进行优化，在subsample=0.8和colsample_bytree=0.6的情况下，得到的最小交叉验证测试误差为：0.6161。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----------------------------------------------------------------------------------------\n",
    "# 7.  调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [0.1, 1, 1.5, 2], 'reg_lambda': [0.1, 0.5, 1, 2]}"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置正则参数范围\n",
    "\n",
    "reg_alpha = [0.1, 1, 1.5, 2]        # default = 0 \n",
    "reg_lambda = [0.1, 0.5, 1, 2]      # default = 1 \n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([mean: -0.61581, std: 0.00291, params: {'reg_alpha': 0.1, 'reg_lambda': 0.1},\n",
       "  mean: -0.61614, std: 0.00442, params: {'reg_alpha': 0.1, 'reg_lambda': 0.5},\n",
       "  mean: -0.61507, std: 0.00392, params: {'reg_alpha': 0.1, 'reg_lambda': 1},\n",
       "  mean: -0.61488, std: 0.00370, params: {'reg_alpha': 0.1, 'reg_lambda': 2},\n",
       "  mean: -0.61559, std: 0.00442, params: {'reg_alpha': 1, 'reg_lambda': 0.1},\n",
       "  mean: -0.61633, std: 0.00374, params: {'reg_alpha': 1, 'reg_lambda': 0.5},\n",
       "  mean: -0.61676, std: 0.00398, params: {'reg_alpha': 1, 'reg_lambda': 1},\n",
       "  mean: -0.61650, std: 0.00367, params: {'reg_alpha': 1, 'reg_lambda': 2},\n",
       "  mean: -0.61632, std: 0.00454, params: {'reg_alpha': 1.5, 'reg_lambda': 0.1},\n",
       "  mean: -0.61678, std: 0.00444, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.61770, std: 0.00446, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.61591, std: 0.00477, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.61633, std: 0.00516, params: {'reg_alpha': 2, 'reg_lambda': 0.1},\n",
       "  mean: -0.61598, std: 0.00527, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.61651, std: 0.00482, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.61665, std: 0.00499, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 0.1, 'reg_lambda': 2},\n",
       " -0.6148801669557812)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置xgb的参数，n_estimators,max_depth,min_child_weight,subsample,colsample_bytree为前三步参数调整得到的最优值 \n",
    "\n",
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=122,   \n",
    "        max_depth=5,\n",
    "        min_child_weight=3,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.6,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "warnings.filterwarnings('ignore')  # 忽略错误信息\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best score is -0.614880 by using parameters of {'reg_alpha': 0.1, 'reg_lambda': 2}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'-Log Loss')"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAucAAAFBCAYAAADUqgGmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xtcj+fjx/HX3UEHpEhbqYUhLVGUUyGHyJjjvjbmNza0cszWkInJ+TAzI2SjGPvaho0xDLWwLKUoYTFUck7pSIf790err0PpoLr71PV8PHps3Z/rvu73J5/r/lyf+3Pd1yXJsowgCIIgCIIgCMpTUzqAIAiCIAiCIAj5ROdcEARBEARBEKoJ0TkXBEEQBEEQhGpCdM4FQRAEQRAEoZoQnXNBEARBEARBqCZE51wQBEEQBEEQqgnRORcEQRAEQRCEakJ0zgVBEARBEAShmhCdc0EQBEEQBEGoJjSUDqAkQ0NDuWnTpkrHEARBKJfw8PB7siw3VjpHVRHnbEEQVFlpz9m1unPetGlTwsLClI4hCIJQLpIkXVc6Q1US52xBEFRZac/ZYliLIAiCIAiCIFQTonMuCIIgCIIgCNWE6JwLgiAIgiAIQjVRq8ecC4Iqyc7OJiEhgaysLKWjCFVMW1sbU1NTNDU1lY5S7Yh2IbyIaDuCKhKdc0FQEQkJCdSvX5+mTZsiSZLScYQqIssy9+/fJyEhgWbNmikdp9oR7UIojmg7gqoSw1oEQUVkZWXRqFEj0QGpZSRJolGjRuLKcDFEuxCKI9qOoKpE51wQVIjogNRO4t/9xcTfRyiOeG0Iqkh0zgVBEARBEAShmhCdc0EQBEEQBEGoJkTnXBDKKTkrmfjUeKVjVJnk5GR8fX3Lte/q1avJyMio4ETl8/nnn7Ny5cqXLvMiSUlJODs707JlS5ydnXnw4EGR5VxcXNDX12fgwIHlPpagPFVrG2PHjuWnn3566XquXbtGmzZtSiwXFBRU5tf4wYMHsbCwoEWLFixdurTIMsHBwbRv3x4NDY0KeT4CpD5OrVXva9WV6JwLQjncy7zHu/vfZfje4Zy9e1bpOFWiKjogOTk55aq/ulm6dCm9e/cmNjaW3r17F9u5+PTTT9m2bVsVpxMqmmgbFSs3N5dJkybx22+/ERMTw/fff09MTMxz5V577TX8/f0ZNWqUAilrnpRHKYw+MJrhe4dz/WGpVpkXKomYSlEQyig9O52JRyaSlJVEQ+2GTDwyEX8Xf1oatKyyDPP3nScm8WGF1vmGiR7z3rIq9vFZs2Zx5coVbGxscHZ2xsjIiB9++IFHjx4xdOhQ5s+fT3p6OiNGjCAhIYHc3Fy8vb25ffs2iYmJ9OzZE0NDQwIDA5+q19/fn/3795OVlUV6ejrHjh1jxYoVz9UNsGDBArZv346ZmRmGhoZ06NABT0/PIvNu2rQJPz8/Hj9+TIsWLdi2bRu6urpPlXFycsLGxobQ0FAePnzI5s2b6dixIwAxMTE4OTkRFxeHh4cHU6dOBWDIkCHEx8eTlZXFtGnTcHV1fe7Yv/zyC0FBQQCMGTMGJycnli1b9ly53r17F5YTXp4S7QJUr208ycfHh3379pGZmUnXrl3ZuHEjkiTh5OSEra0t4eHh3L17l61bt7JkyRKioqJ45513WLhwIZD/oWHMmDFERETQqlUrtm7diq6uLgcPHsTDwwNDQ0Pat29feLzQ0FA8PDzIzMxER0eHLVu2YGFh8VSm0NBQWrRoQfPmzQF49913+eWXX3jjjTeeKte0aVMA1NTEdcaX9Tj3MR6BHsSnxqOtrs3s47MJ6B+AhproJipBvKIFoQyyc7OZHjidvx/8zRc9vuCbvt+gpa7FR79/REJqgtLxKtXSpUt5/fXXiYyMxNnZmdjYWEJDQ4mMjCQ8PJzg4GAOHjyIiYkJZ8+eJTo6GhcXF6ZOnYqJiQmBgYHPdT4KhISEEBAQwLFjxzh8+HCRdYeFhbFr1y4iIiLYvXs3YWFhL8w7bNgwTp8+zdmzZ7G0tOTbb78tslx6ejp//vknvr6+fPjhh4XbL168yKFDhwgNDWX+/PlkZ2cDsHnzZsLDwwkLC2PNmjXcv38fgPHjxxdmun37NsbGxgAYGxtz586dsv2xBZWiam3jSZMnT+b06dNER0eTmZnJr7/+WvhYnTp1CA4Oxs3NjcGDB7Nu3Tqio6Px9/cvfN1funQJV1dXzp07h56eHr6+vmRlZTFhwgT27dvH8ePHuXXrVmGdrVu3Jjg4mIiICHx8fJg9ezYAiYmJvPnmmwDcuHEDMzOzwn1MTU25ceNG6f9BhDLJk/OYc2IOYbfDWOiwkLld53Lu3jk2RW1SOlqtJT4SCUIp5cl5eP/pTcjNEBY4LKCbaTcANjpvZOzBsbj+7srW/lsx1DGs9CwlXcmrbIcPH+bw4cPY2toCkJaWRmxsLN26dcPT05OZM2cycOBAunXrVqr6nJ2dadiw4QvrTk1NZfDgwejo6ADw1ltvvbDO6Oho5syZQ3JyMmlpafTr16/IciNHjgSge/fuPHz4kOTkZAAGDBiAlpYWWlpaGBkZcfv2bUxNTVmzZg179uwBID4+ntjYWBo1asQ333xTqucqVB6l2wWoRtt4UmBgIMuXLycjI4OkpCSsrKwK9x80aBAA1tbWWFlZFX7gbN68OfHx8ejr62NmZoaDgwMAo0ePZs2aNfTp04dmzZrRsmXLwu1+fn4ApKSkMGbMGGJjY5EkqfBDr4mJCQcOHADyFw96lpgSsfKsPrOa3679hkd7D95snv8B6Y/4P9h4diOOJo5YN7ZWOGHtI66cC0IprQ5fzf5/9jOt/TSGtBhSuL2lQUvW9V7Hvcx7uP3uxsPHFfu1enUkyzJeXl5ERkYSGRnJ5cuXGTduHK1atSI8PBxra2u8vLzw8fF5bt89e/ZgY2ODjY1N4RW+unXrllh3UW/YLzJ27FjWrl1LVFQU8+bNK3Yhkmff9At+19LSKtymrq5OTk4OQUFBHDlyhJCQEM6ePYutrW2R9b7yyivcvHkTgJs3b2JkZFSm7ILqUoW2USArK4uJEyfy008/ERUVxYQJE556PRe0ATU1tafag5qaWuEY+OLaT3GdaW9vb3r27El0dDT79u0rsv2YmpoSH/+/mxITEhIwMTEp13MUXuz7i9+zJXoL71i8w4dt/vfNoVcnLxrrNsbrhBcZ2dXjZv7aRHTOBaEUtp7fypbzW3jX4l3GtRn33OM2RjasdlrNlZQrTD46mcycTAVSVq769euTmpoKQL9+/di8eTNpaWlA/tfQd+7cITExEV1dXUaPHo2npydnzpx5bt+hQ4cWdi7s7OyeO05xdTs6Oha+maelpbF///4X5k1NTcXY2Jjs7Gy2b99ebLmdO3cCcOLECRo0aECDBg2KLZuSkoKBgQG6urpcvHiRU6dOFVlu0KBBBAQEABAQEMDgwYNfmFVQbarWNgoUdIwNDQ1JS0sr14wncXFxhISEAPD999/j6OhI69atuXr1KleuXCncXiAlJYUmTZoA+WPqi2Jvb09sbCxXr17l8ePH/Pe//y28ii9UnMC4QJaGLsXJ1IlZHWc99YFKr44eixwWEfcwjlXhqxRMWTuJzrkglOC3q7+xImwFzubOz53AntS1SVeWdFtC5J1IPgn6hOy87CpOWrkaNWqEg4MDbdq04ffff2fUqFF06dIFa2tr3n77bVJTU4mKiqJjx47Y2NiwaNEi5syZA4Crqyv9+/enZ8+eJR6nb9++RdZtb2/PoEGDaNeuHcOGDcPOzu6FHekFCxbQqVMnnJ2dad26dbHlDAwM6Nq1K25ubsWOSy/g4uJCTk4Obdu2xdvbm86dOxc+9uSY81mzZvH777/TsmVLfv/9d2bNmgVAWFgY48ePL9ynW7du/Oc//+Ho0aOYmppy6NChEv8+QvWjam2jgL6+PhMmTMDa2pohQ4Zgb29f5uduaWlJQEAAbdu2JSkpCXd3d7S1tfHz82PAgAE4Ojpibm5eWH7GjBl4eXnh4OBAbm5u4fYnx5xraGiwdu1a+vXrh6WlJSNGjMDKKn/I0ty5c9m7dy8Ap0+fxtTUlB9//JGPPvqosIxQsnN3zzEjeAZvNHyDZd2XFXnjZ0fjjrz/xvvsvLST4wnHFUhZe0nl/TqsJrCzs5PLcuOMUPv8dfMv3I640a5xOzY6b0RLXavEfX78+0d8Qnx4s9mbLOm2BDWpYj4DX7hwAUtLywqpS1WlpaVRr149MjIy6N69O35+fk/NBFFWTk5OrFy5ssirlNVNUf/+kiSFy7Jc/cNXkKLO2aJd5KvotlGTiNfI0+IfxjP6t9Hoaujy3Zvf0UinUbFlH+U+YuT+kTzIesDuQbsx0DaowqQ1T2nP2eLKuSAU42LSRaYFTqOpXlPW9FpTqo45wH9a/Ydp7adx4OoBlvy1pNzjQYXnubq6YmNjQ/v27Rk+fLjofAjCv0TbEErjQdYD3I+6kyfnsb7P+hd2zAG01LVY4riElEcp+IT4iPezKiJmaxGEItxIu4H7EXfqadZjfZ/16NXRK9P+49qMIzkrmYCYAPS19ZlkM6mSktYuO3bseG7bpEmTOHny5FPbpk2bxgcffFBifWKOcaGmqOi2IdQ8WTlZTDk2hVvpt/im7zc0bdC0VPtZNLRgiu0UVoWvYu+VvQxuIe6hqWyicy4Iz3iQ9QC33914nPuYrf238mrdV8tchyRJfGL3CSmPU9hwdgP6Wvq8Z/leJaQV1q1bp3QEQaiWRNsQCuTm5TLr+CzO3T3HKqdV2BjZlGn/9994n+CEYJaELqHDKx0wrW9aSUkFEMNaBOEpGdkZTD46mZvpN1nbey2v679e7rokSWJel3n0MuvF0tCl7LuyrwKTCoIgCELJZFlmRdgKjsYdZYb9DPqY9ylzHepq6ixyXATAZyc+Izcvt4Q9hJchOueC8K+cvBw+Df6U6PvRLOu+DFsj25euU0NNg+U9ltPx1Y54n/Tmj/g/KiCpIAiCIJTO1pitbL+wnf974/8Y/cboctdjUs+E2Z1mc+bOGfzP+1dcQOE5onMuCORfWfAJ8SE4IZjPOn1G79d6V1jdWupafNXzKywaWvDJH58QdkvMECQIgiBUvkPXDrEybCXO5s542nm+dH1vNX8LZ3Nn1kau5WLSxQpIKBRFdM4FAVgXuY49l/fwUduPGGExosLrr1cn/8ZS47rGTDk2hQv3L1T4MQRBEAShwJnbZ5h9fDa2RrYVNq2vJEnM7TwXAy0DvI578Sj3UQUkFZ5VqZ1zSZJcJEm6JEnSZUmSZhVTZoQkSTGSJJ2XJGnHE9sPSpKULEnSr8+UPy5JUuS/P4mSJP3873YnSZJSnnhsbmU+N6Hm+OHSD2w8t5FhLYdV6qwqDbUbsqnvJurVqYfbETeuP7xeaceqDMnJyfj6+pZr39WrV5ORUT2WgP78889ZuXLlS5d5kR9//BErKyvU1NRQpbUUxDm7fFStbYwdO7Zcq4E+69q1a7Rp06bEckFBQQwcOLBMdR88eBALCwtatGjB0qVLiyzj7+9P48aNsbGxwcbGhm+++aZMx6jJ/kn5hynHpmBSz4Q1PUs/FXBp6Gvrs8BhAZeTL/PVma8qrF7hfyqtcy5JkjqwDugPvAGMlCTpjWfKtAS8AAdZlq0AjyceXgH837P1yrLcTZZlG1mWbYAQYPcTDx8veEyWZZ+KfUZCTXT0+lEW/bWIHqY98O7sXezqnxXl1bqv4ufshyzLuB525Vb6rUo9XkWqig5ITk5Oueqvbtq0acPu3bvp3r270lFKTZyzy0+0jYqVm5vLpEmT+O2334iJieH7778nJiamyLLvvPMOkZGRREZGPrX6bm12L/MeE49MRENNg/V91qOvrV/hx3Bo4sC7Fu+yLWYbp26eqvD6a7vKnEqxI3BZluV/ACRJ+i8wGHiyhU0A1smy/ABAluU7BQ/IsnxUkiSn4iqXJKk+0AsQE7YK5XLm9hlmBM+gjWEbVvRYUeTyxZWhWYNmrHdez7hD43D73Q1/F/+ynzx/mwW3oio22KvW0L/oK1SQvyT9lStXsLGxwdnZGSMjI3744QcePXrE0KFDmT9/Punp6YwYMYKEhARyc3Px9vbm9u3bJCYm0rNnTwwNDQkMDHyqXn9/f/bv309WVhbp6ekcO3aMFStWPFc3wIIFC9i+fTtmZmYYGhrSoUMHPD2LHke5adMm/Pz8ePz4MS1atGDbtm3o6uo+VcbJyQkbGxtCQ0N5+PAhmzdvpmPHjgDExMTg5OREXFwcHh4eTJ06FYAhQ4YQHx9PVlYW06ZNw9XV9bljq+hqhKp/zlagXYDqtY0n+fj4sG/fPjIzM+natSsbN25EkiScnJywtbUlPDycu3fvsnXrVpYsWUJUVBTvvPMOCxcuBPI/NIwZM4aIiAhatWrF1q1b0dXV5eDBg3h4eGBoaPjUgkihoaF4eHiQmZmJjo4OW7ZswcLC4qlMoaGhtGjRgubNmwPw7rvv8ssvv/DGG099VhSKkJGdwaSjk0jKSmJLvy2VOuXhx3Yfc+rmKeacmMOuQbtooNWg0o5V21TmsJYmQPwTvyf8u+1JrYBWkiSdlCTplCRJLmWofyhwVJblh09s6yJJ0llJkn6TJMmqqJ0kSXKVJClMkqSwu3fvluFwQk1y+cFlJh+bjEk9E9b2WouOhk6VHt+qkRVf9/qa+NR4Jh6dSHp2epUevzyWLl3K66+/TmRkJM7OzsTGxhIaGkpkZCTh4eEEBwdz8OBBTExMOHv2LNHR0bi4uDB16lRMTEwIDAx8rvNRICQkhICAAI4dO8bhw4eLrDssLIxdu3YRERHB7t27SxwuMmzYME6fPs3Zs2extLTk22+/LbJceno6f/75J76+vnz44YeF2y9evMihQ4cIDQ1l/vz5ZGdnA7B582bCw8MJCwtjzZo13L9/H4Dx48er1BCWIohzdjmpWtt40uTJkzl9+jTR0dFkZmby66//G5VUp04dgoODcXNzY/Dgwaxbt47o6Gj8/f0LX/eXLl3C1dWVc+fOoaenh6+vL1lZWUyYMIF9+/Zx/Phxbt363zeErVu3Jjg4mIiICHx8fJg9ezYAiYmJvPnmmwDcuHEDMzOzwn1MTU25ceNGkfl37dpF27Ztefvtt4mPjy+yTG2Rk5eD5x+eXEy6yIruK7AyLLJJVRgdDR2WdlvK/cz7LP5rcaUeq7apzEuFRY0PeHbdVw2gJeAEmALHJUlqI8tycinqHwk8OcDsDGAuy3KaJElvAj//W/fTAWTZD/ADsLOzE+vQ1kK30m/hdsQNLXUtNjhvwEDbQJEc9q/as6LHCj4O+phpgdPw7e1LHfU6pdu5hCt5le3w4cMcPnwYW9v86SbT0tKIjY2lW7dueHp6MnPmTAYOHEi3bt1KVZ+zszMNGzZ8Yd2pqakMHjwYHZ38D1JvvfXWC+uMjo5mzpw5JCcnk5aWRr9+/YosN3LkSAC6d+/Ow4cPSU7OP/0MGDAALS0ttLS0MDIy4vbt25iamrJmzRr27NkDQHx8PLGxsTRq1KgmjHdV/XO2wu0CVKNtPCkwMJDly5eTkZFBUlISVlZWhfsPGjQIAGtra6ysrDA2NgagefPmxMfHo6+vj5mZGQ4ODgCMHj2aNWvW0KdPH5o1a0bLli0Lt/v5+QGQkpLCmDFjiI2NRZKkwg+9JiYmHDhwAKDIJeKLGnL41ltvMXLkSLS0tNiwYQNjxozh2LFjpX7uNYksyyw8tZDjN47j3dmbHmY9quS4VoZWfNTuI9ZFrsPJzIn+zfpXyXFrusq8cp4AmD3xuymQWESZX2RZzpZl+SpwiSJOzs+SJKkR+V/B7i/YJsvyQ1mW0/79/wOApiRJhi/3FISaJuVRCu5H3EnPTmdDnw00qffshcGq1eu1XszvOp+/bv7FrOOzVGZhB1mW8fLyKhzrefnyZcaNG0erVq0IDw/H2toaLy8vfHyeH0a8Z8+ewhu4Cq7w1a1bt8S6i3rDfpGxY8eydu1aoqKimDdvHllZWUWWe/ZNv+B3La3/3UClrq5OTk4OQUFBHDlyhJCQEM6ePYutrW2x9aogcc6uAKrQNgpkZWUxceJEfvrpJ6KiopgwYcJTr+eCNqCmpvZUe1BTUyscA19c+ynu/h1vb2969uxJdHQ0+/btK7L9mJqaPnUVPCEhARMTk+fKNWrUqDDXhAkTCA8PL9Xzrok2RW1iV+wuxluPr5QZx15kvPV42jZuy4JTC1TqPqrqrDI756eBlpIkNZMkqQ7wLrD3mTI/Az0B/j0ptwL+KUXd/wF+lWW5sFVLkvSq9O/ZQJKkjuQ/t/sv/SyEGuNR7iOmHpvKtYfXWN1zNRYNLUreqQoMbjGYT+0+5ffrv+Nzyqfcb7SVrX79+qSmpgLQr18/Nm/eTFpaGpD/NfSdO3dITExEV1eX0aNH4+npyZkzZ57bd+jQoYWdCzs7u+eOU1zdjo6OhW/maWlp7N+//7l9n5SamoqxsTHZ2dls37692HI7d+4E4MSJEzRo0IAGDYofN5mSkoKBgQG6urpcvHiRU6dq1I1Q4pxdTqrWNgoUdIwNDQ1JS0sr1wwucXFxhISEAPD999/j6OhI69atuXr1KleuXCncXiAlJYUmTfIvivj7+xdZp729PbGxsVy9epXHjx/z3//+t/Aq/pNu3rxZ+P979+5V1Xs9Xtq+K/v4OuJrBjQfwFTbqVV+fA01DZY4LiEnL4c5J+eQJ+dVeYaaptKGtciynCNJ0mTgEKAObJZl+bwkST5AmCzLe/99rK8kSTFALvCpLMv3IX/6LaA1UE+SpARgnCzLh/6t/l3g2e8v3wbcJUnKATKBd+Xq2ssRqlxuXi6zgmdx5s4ZVnRfQSfjTkpHesr7Vu+T/CiZTVGbaKDVgI87fKx0pOc0atQIBwcH2rRpQ//+/Rk1ahRdunQBoF69enz33XdcvnyZTz/9FDU1NTQ1NVm/fj0Arq6u9O/fH2Nj42LH1hbo27cvFy5ceK5ue3t7Bg0aRLt27TA3N8fOzu6FHekFCxbQqVMnzM3Nsba2LuwAPcvAwICuXbsW3hD6Ii4uLmzYsIG2bdtiYWFB586dCx8bP348bm5u2NnZsWfPHqZMmcLdu3cZMGAANjY2HDp06AU1K0+cs8tP1dpGAX19fSZMmIC1tTVNmzbF3t6+zM/d0tKSgIAAPvroI1q2bIm7uzva2tr4+fkxYMAADA0NcXR0JDo6GoAZM2YwZswYVq1aRa9evQrrSUxMZPz48Rw4cAANDQ3Wrl1Lv379yM3N5cMPP8TKKn/89Ny5c7Gzs2PQoEGsWbOGvXv3oqGhQcOGDYvt7Ndkp26eYu7JuXR8tSMLui6o9BnHivOa3mvMsJ/B/JD57Liw46VWIhXI/5qstv506NBBFmq+vLw8eWHIQrmNfxt56/mtSscpVl5enuzzp4/cxr+N/G3Ut889HhMTo0Cq6iU1NVWWZVlOT0+XO3ToIIeHh79UfT169JBPnz5dEdEqXVH//uR3mhU/l1bVT1HnbNEu8lV026hJaupr5FLSJbnz9s7ykJ+HyCmPUpSOI+fl5cmTjkyS229tL19+cFnpONVSac/ZYoVQocb7Juob/nvpv3xg9QH/98Zz0zBXG5IkMbvTbFyauvBl+Jfs+nuX0pGqHVdXV2xsbGjfvj3Dhw9/aoo2QajNRNuoXW6l38L9iDu6Grqs77MevTp6SkdCkiQ+7/o59erUY9bxWWTnZisdSWVVzcTOgqCQny//zJqINQxsPhCPDh4l76AwdTV1FjsuJjU7FZ9TPuhp6eFs7qx0rGpjx44dz22bNGkSJ0+efGrbtGnT+OCDkqfTDgoKqqhogqCoim4bQvWV+ji1cAreAJcAXq37qtKRChnqGDKvy7z8GcjO+jKt/TSlI6kk0TkXaqzghGA+//Nzupp0xaerD2qSanxRpKmuyaoeq/jo94+YGTyTer3r0cWki9Kxqq1169YpHUEQqiXRNmqe7NxspgdN52ryVdb1WVdtJjZ4Uq/XejGs5TA2R2+mW5NutH9FfItTVqrRWxGEMoq6G4XnH560MmjFKqdVaKprKh2pTHQ1dVnbey3meuZMC5xG1N0KXvVQEARBUCmyLPN5yOf8dfMv5nWdR1eTrkpHKtYM+xmY1DVh9onZpD1OUzqOyhGdc6HGuZZyjUlHJ9FIuxG+fXypq1m35J2qoQZaDfBz9qOhdkPcj7qTnSfG7wmCINRWayPXsvfKXibaTGRIiyFKx3mhupp1WdJtCTfTb7Ls9DKl46gc0TkXapR7mfdwO+KGJElscN6AoY5qr2nSWLcxm5w3oammSVJmEo9zHysdSRAEQahiP/39E37n/BjWchhubd2UjlMqNkY2jGszjp8v/8zR60eVjqNSROdcqDHSHqcx8chEkrKSWNd7HeZ65kpHqhBmemZs6LMBGZnrD68rdgU9OTkZX1/fcu27evVqMjIyKjhR+Xz++eesXLnypcu8yI8//oiVlRVqamqFKz0WpWnTplhbW2NjY1PkojOCalC1tjF27NhyLTj0rGvXrtGmTZsSywUFBTFw4MAy1f3hhx9iZGRUqvpruuMJx1l4aiEOJg7M6TxHsbnMy8O9nTuWDS2ZHzKfe5n3lI6jMkTnXKgRsnOz8QjyIPZBLKucVtHGsGad0C0aWtBQuyHZednEPYwjNy+3yjNURQekYElwVdemTRt2795N9+7dSywbGBhIZGTkCzvxQvUm2kbFGzt2LAcPHlQ6huLO3z/PJ398QiuDVnzh9AWaaqp1/5SmuiZLuy0lIyeDuSfnkj/Vt1ASMVuLoPLy5DzmnJzDXzf/YpHjIhybOCodqVLUUa+DaX1T4h/G433Sm5vpN0veqQxaN2zNzI4zi3181qxZXLlyBRsbG5ydnTEyMuKHH37g0aNHDB06lPnz55Oens6IESNISEggNzcXb29vbt++TWJiIj179sTQ0PC5VRD9/f3Zv38/WVlZpKenc+zYMVasWPFc3ZC/6uf27dsxMzPD0NCQDh064OnpWWTeTZs24efnx+PHj2nRogXbtm1DV1f3qTJOTk7Y2NgQGhpauEJox44dAYiJicHJyYmE4SaLAAAgAElEQVS4uDg8PDyYOjV/WewhQ4YQHx9PVlYW06ZNw9XV9blj19ZlxJW2LHQZF5MuVmidJbULUL228SQfHx/27dtHZmYmXbt2ZePGjUiShJOTE7a2toSHh3P37l22bt3KkiVLiIqK4p133mHhwoVA/oeGMWPGEBERQatWrdi6dSu6urocPHgQDw8PDA0Nn5pzPTQ0FA8PDzIzM9HR0WHLli1YWDw/40j37t25du1aiflrshtpN5h0ZBL6Wvqs671OZe+faq7fnOkdprM0dCk//v0jIyxGKB2p2hNXzgWVtypsFQeuHmBa+2kMen2Q0nEqVf069WlSvwk5eTk8yn1UpcdeunQpr7/+OpGRkTg7OxMbG0toaCiRkZGEh4cTHBzMwYMHMTEx4ezZs0RHR+Pi4sLUqVMxMTEhMDCw2OXJQ0JCCAgI4NixYxw+fLjIusPCwti1axcRERHs3r27xCvNw4YN4/Tp05w9exZLS0u+/fbbIsulp6fz559/4uvry4cffli4/eLFixw6dIjQ0FDmz59Pdnb+cKLNmzcTHh5OWFgYa9as4f79+wCMHz++zFe/JUmib9++dOjQAT8/vzLtK1QfqtY2njR58mROnz5NdHQ0mZmZ/Prrr4WP1alTh+DgYNzc3Bg8eDDr1q0jOjoaf3//wtf9pUuXcHV15dy5c+jp6eHr60tWVhYTJkxg3759HD9+nFu3bhXW2bp1a4KDg4mIiMDHx4fZs2cDkJiYyJtvvlmeP3+NlPIoBfcj7jzOe8z6PutprNtY6UgvZWTrkXQx7sLKsJVcS7mmdJxqT1w5F1RawPkAAmICGNV6FOPajFM6TpVooNWAWR1ncTP9Jg20GtCkXpMqH4N4+PBhDh8+jK2tLQBpaWnExsbSrVs3PD09mTlzJgMHDqRbt26lqs/Z2ZmGDRu+sO7U1FQGDx6Mjo4OAG+99dYL64yOjmbOnDkkJyeTlpZGv379iiw3cuRIIP9K3cOHD0lOTgZgwIABaGlpoaWlhZGREbdv38bU1JQ1a9awZ88eAOLj44mNjaVRo0Z88803pXquTzp58iQmJibcuXMHZ2dnWrduXaqhMELRSrrCXRVUoW08KTAwkOXLl5ORkUFSUhJWVlaF+w8alH+xw9raGisrK4yNjQFo3rw58fHx6OvrY2ZmhoODAwCjR49mzZo19OnTh2bNmtGyZcvC7QUfPlNSUhgzZgyxsbFIklT4odfExIQDBw6UOndN9ij3EVOPTSUhNYGNzht5Xf91pSO9NDVJjQUOCxi2dxizT8xma/+taKiJLmhxxJVzQWUd+OcAK8NW4mzuzAz7GSp1k8zLaqjTECNdI1IepXAr41aVj+OTZRkvLy8iIyOJjIzk8uXLjBs3jlatWhEeHo61tTVeXl74+Pg8t++ePXuwsbHBxsam8Apf3bp1S6y7rM9x7NixrF27lqioKObNm0dWVlaR5Z593RT8rqWlVbhNXV2dnJwcgoKCOHLkCCEhIZw9exZbW9ti6y0NExMTAIyMjBg6dCihoaHlrkuoHlShbRTIyspi4sSJ/PTTT0RFRTFhwoSnXs8FbUBNTe2p9qCmplY4Br649lPc+djb25uePXsSHR3Nvn37Xqr91ER5ch6fnfiMM3fOsMhxEfav2isdqcK8UvcVvLt4E3Uvik3nNikdp1oTnXNBJZ26eYrPTn6G3St2LOm2BHU1daUjVTlDHUMa6jQkKTOJu5l3K/149evXJzU1FYB+/fqxefNm0tLyF5e4ceMGd+7cITExEV1dXUaPHo2npydnzpx5bt+hQ4cWdi6KmqGkuLodHR0L38zT0tLYv3//C/OmpqZibGxMdnY227dvL7bczp07AThx4gQNGjSgQYMGxZZNSUnBwMAAXV1dLl68yKlTp16Y4UXS09ML/ybp6ekcPnxYzEyholStbRQo6BgbGhqSlpZWrhlc4uLiCAkJAeD777/H0dGR1q1bc/XqVa5cuVK4vUBKSgpNmjQB8sfUC0/7MvxLDl07xPQO0+nfrL/ScSqcS1MXBjYfyMZzG8Xiei8gOueCyrlw/wIegR40a9CMr3p9hZa6Vsk71UCSJPGq7qvoa+lzN+Mu9zPvV+rxGjVqhIODA23atOH3339n1KhRdOnSBWtra95++21SU1OJioqiY8eO2NjYsGjRIubMmQOAq6sr/fv3p2fPniUep2/fvkXWbW9vz6BBg2jXrh3Dhg3Dzs7uhR3pBQsW0KlTp8LhIsUxMDCga9euuLm5FTsuvYCLiws5OTm0bdsWb29vOnfuXPjYk2PO9+zZg6mpKSEhIQwYMKBwSM2T42pv376No6Mj7dq1o2PHjgwYMAAXF5cS/z5C9aNqbaOAvr4+EyZMwNramiFDhmBvX/artJaWlgQEBNC2bVuSkpJwd3dHW1sbPz8/BgwYgKOjI+bm/5vWdsaMGXh5eeHg4EBu7v9mnXp2zPnIkSPp0qULly5dwtTUtMS2WRPsuLAD//P+vGPxDh9YfaB0nErj1cmLxrqN8TrhRUZ29Zhit7qRavO0NnZ2drKYvky1JKQmMPrAaDTVNfmu/3e8UvcVpSNVmQsXLhQ5C4gsy8SnxpP6OJUm9Zugr6WvQLqqkZaWRr169cjIyKB79+74+fk9NRNEWTk5ObFy5UqVmGO8qH9/SZLCZVmu/uErSFHn7OLaRW1T0W2jJlGF18jRuKNMD5xOD7MerHZaXeO/DQ69Gcr4w+MZYTGCOZ3nKB2nypT2nC2unAsqIykrCbcjbmTnZbOxz8Za1TF/EUmSMK1viq6mLompiaQ+TlU6UqVxdXXFxsaG9u3bM3z4cNH5EIR/ibahus7ePcvM4Jm0MWzD8u7La3zHHKCjcUfef+N9dl7ayfGE40rHqXbErbKCSsjIzmDy0cncSr/FN32/obl+c6UjVStqkhqv1X+Naw+vEZ8aj7meucrOifsiO3bseG7bpEmTOHny5FPbpk2bxgcflPy1cFBQUEVFEwRFVXTbEKpG3MM4phydQmOdxnzd62t0NHSUjlRlprSfwp83/2Tun3PZPWg3BtoGSkeqNkTnXKj2svOy8fzDk/P3z/Ol05fYGNkoHalaUldTx1zPnKspV4l7GEezBs3Q1tBWOlalW7dundIRBKFaEm2jeiv4NlhGZoPzBhrpNFI6UpXSUtdiieMSRu4fyfyQ+Xzp9GWtmnXtRcSwFqFak2UZnxAfjt84zpzOc+j1Wi+lI1VrGmoamOuZoyapcf3h9SpfqEgQBEEoWWZOJlOOTuFOxh2+7vU15nrmJe9UA1k0tGCK7RSOxh3llyu/KB2n2hCdc6Fa+zria36+/DPu7dz5T6v/KB1HJdRRr0NTvabIyFx/eJ3s3GylIwmCIAj/ys3LZWbwTKLuRbGs27Ja/23w+2+8j90rdiwNXUpCaoLScaoF0TkXqq3/Xvwvm6I2MbzlcNzbuSsdR6VoaWhhXt+c3LxcrqdeJycvR+lIgiAItZ4syyw7vYzA+EBmdpxJb/PeSkdSnLqaOoscFwHw2YnPyM3LLWGPmk90zoVq6cj1Iyz+azFOpk7M6TxHjEMrBx1NHczqm/E49zFxqXHihCcIgqCwgPMBfH/xe95/433es3xP6TjVhkk9E2Z3ms2ZO2fwP++vdBzFic65UO2E3w5nZvBM2jZuy/Iey9FQE/ctl1e9OvUwrWdKZnYmCWkJ5Ml55a4rOTkZX1/fcu27evVqMjKqx2ITn3/+OStXrnzpMi/y6aef0rp1a9q2bcvQoUNJTk4ud11C9adqbWPs2LHlWg30WdeuXSvVqrZBQUEMHDiw1PXGx8fTs2dPLC0tsbKy4quvvnqZmNXGwasH+SL8C/qa9+UTu0+UjlPtvNX8LZzNnVkbuZaLSReVjqMo0TkXqpXYB7FMOTaFJvWbsLbX2lo1rVRl0dPSw6SeCWmP07iRdoPyLjxWFR2QnJyaMfzG2dmZ6Ohozp07R6tWrViyZInSkYRKJNpGxdLQ0OCLL77gwoULnDp1inXr1hETE6N0rJcSdiuM2Sdm096oPYu7LUZNEt2vZ0mSxNzOczHQMsDruFetntBAXJIUqo1b6bdwO+KGtro2G/psQF+75q50+bJuLV7Mowtlu7KglZdNau5jYtU0qaNeh2cHCmlZtubV2bOL3X/WrFlcuXIFGxsbnJ2dMTIy4ocffuDRo0cMHTqU+fPnk56ezogRI0hISCA3Nxdvb29u375NYmIiPXv2xNDQkMDAwKfq9ff3Z//+/WRlZZGens6xY8dYsWLFc3UDLFiwgO3bt2NmZoahoSEdOnTA09OzyLybNm3Cz8+Px48f06JFC7Zt24auru5TZZycnLCxsSE0NJSHDx+yefNmOnbsCEBMTAxOTk7ExcXh4eHB1KlTARgyZAjx8fFkZWUxbdo0XF1dnzt23759C/+/c+fOFXKVUihZedpFSUpqF6B6beNJPj4+7Nu3j8zMTLp27crGjRuRJAknJydsbW0JDw/n7t27bN26lSVLlhAVFcU777zDwoULgfwPDWPGjCEiIoJWrVqxdetWdHV1OXjwIB4eHhgaGj61IFJoaCgeHh5kZmaio6PDli1bsLCweCqTsbExxsbGANSvXx9LS0tu3LjBG2+8UfI/WDX0T/I/TA2cSpN6TVjTaw1a6lpKR6q29LX1WeCwALcjbnx15itm2M9QOpIixEc3oVpIeZSC2+9uZGRnsL7PekzqmSgdqcbRVNNEU12TnLxssvMel3n/pUuX8vrrrxMZGYmzszOxsbGEhoYSGRlJeHg4wcHBHDx4EBMTE86ePUt0dDQuLi5MnToVExMTAgMDn+t8FAgJCSEgIIBjx45x+PDhIusOCwtj165dREREsHv3bp5dxv1Zw4YN4/Tp05w9exZLS0u+/fbbIsulp6fz559/4uvry4cffli4/eLFixw6dIjQ0FDmz59Pdnb+rDebN28mPDycsLAw1qxZw/379wEYP358kZk2b95M//79S/U3FlSTqrWNJ02ePJnTp08THR1NZmYmv/76a+FjderUITg4GDc3NwYPHsy6deuIjo7G39+/8HV/6dIlXF1dOXfuHHp6evj6+pKVlcWECRPYt28fx48f59atW4V1tm7dmuDgYCIiIvDx8WH2vx98EhMTefPNN5/Ld+3aNSIiIujUqVOpn1N1cjfjLu5H3KmjVof1fdbTQKuB0pGqPYcmDrxr8S7bYrZx6uYppeMoQlw5FxSXlZPF1GNTiUuNY0OfDVg0tCh5p1qupCt5xZFlmZvpN3mQ9QCDuq9gqGNYrnoOHz7M4cOHsbW1BSAtLY3Y2Fi6deuGp6cnM2fOZODAgXTr1q1U9Tk7O9OwYcMX1p2amsrgwYPR0ckf6vTWW2+9sM7o6GjmzJlDcnIyaWlp9OvXr8hyI0eOBKB79+48fPiwcHz4gAED0NLSQktLCyMjI27fvo2pqSlr1qxhz549QP7Y2NjYWBo1asQ333zzXN2LFi1CQ0OD994TN35VhfK2i4qkCm3jSYGBgSxfvpyMjAySkpKwsrIq3H/QoEEAWFtbY2VlVXg1u3nz5sTHx6Ovr4+ZmRkODg4AjB49mjVr1tCnTx+aNWtGy5YtC7f7+fkBkJKSwpgxY4iNjUWSpMIPvSYmJhw4cOCpbGlpaQwfPpzVq1ejp6dX6udUXWRkZzDp6CQePHrAln5bMK1vqnQklfGx3cecunmKOSfmsGvQrlr3oUZcORcUlZuXy6zjs4i4E8HibovpaNxR6Ug1miRJGNc1Rk9Lj9vpt3mQ9aBc9ciyjJeXF5GRkURGRnL58mXGjRtHq1atCA8Px9raGi8vL3x8fJ7bd8+ePdjY2GBjY1N4ha9u3bol1l3WsfJjx45l7dq1REVFMW/ePLKysoos9+xMQAW/a2n976tndXV1cnJyCAoK4siRI4SEhHD27FlsbW2LrTcgIIBff/2V7du3i9mGahFVaBsFsrKymDhxIj/99BNRUVFMmDDhqddzQRtQU1N7qj2oqakVjoEvrv0U95r39vamZ8+eREdHs2/fvmLbT3Z2NsOHD+e9995j2LBh5Xp+SsrJy+GTPz7h7wd/s7LHSqwMrZSOpFJ0NHRY2m0p9zPvs/ivxUrHqXKicy4oRpZlFv+1mKNxR5nZcSYuTV2UjlQrSJJEk3pNqKtZl8S0RB4+eliq/erXr09qaioA/fr1Y/PmzaSlpQFw48YN7ty5Q2JiIrq6uowePRpPT0/OnDnz3L5Dhw4t7FzY2dk9d5zi6nZ0dCx8M09LS2P//v0vzJuamoqxsTHZ2dls37692HI7d+4E4MSJEzRo0IAGDYq/QpOSkoKBgQG6urpcvHiRU6eK/sr14MGDLFu2jL179z43zl2oeVStbRQo6BgbGhqSlpZWrnsj4uLiCAkJAeD777/H0dGR1q1bc/XqVa5cuVK4vUBKSgpNmjQB8sfUF0WWZcaNG4elpSUff/xxmTMpTZZlFp5ayIkbJ5jTeQ7dTbsrHUklWRla8VG7jzhw9QC/Xf1N6ThVSgxrERTjd86PH/7+gQ/bfCjme61iapIaZvXNuJ56nYS0BF6TXqNenXov3KdRo0Y4ODjQpk0b+vfvz6hRo+jSpQsA9erV47vvvuPy5ct8+umnqKmpoampyfr16wFwdXWlf//+GBsbFzu2tkDfvn25cOHCc3Xb29szaNAg2rVrh7m5OXZ2di/sSC9YsIBOnTphbm6OtbV1YQfoWQYGBnTt2rXwhtAXcXFxYcOGDbRt2xYLCws6d+5c+Nj48eNxc3PDzs6OyZMn8+jRI5ydnYH8m0I3bNjwwroF1aVqbaOAvr4+EyZMwNramqZNm2Jvb1/m525paUlAQAAfffQRLVu2xN3dHW1tbfz8/BgwYACGhoY4OjoSHR0NwIwZMxgzZgyrVq2iV69ehfUkJiYyfvx4Dhw4wMmTJ9m2bRvW1tbY2OSvnrl48eIix6RXR37n/NgVu4sJ1hN4u9XbSsdRaeOtx3P8xnEWnFqArZEtr9Z9VelIVUOW5Vr706FDB1lQxu6/d8tt/NvIXsFecl5entJxVEJMTEyF15mdmy3HPoiVY+7FyBmPMyq8/oqWmpoqy7Isp6enyx06dJDDw8Nfqr4ePXrIp0+frohola6of38gTK4G59Kq+inqnF0Z7UIVVXTbqEmq8jXyy+VfxHtbBbuecl22/85eHndonJybl6t0nJdS2nO2GNYiVLnghGDmh8zHwcSB+Q7zxXhcBWmoaWBe3xx1NXWup17nUU71nlfW1dUVGxsb2rdvz/Dhw5+aok0QajPRNpQXkhjCvJPz6GTcifldxXtbRXlN7zVm2M/gr5t/sePCDqXjVAkxrEWoUufunuOToE+waGjBKqdVaKppKh2p1tNU18Rcz5xrKde49vAazRo0o456HaVjFWnHjudPzJMmTeLkyZNPbZs2bRoffPBBifUFBQVVVDRBUFRFtw2hbC4lXWJ60HSa6TfjS6cv0VQX720VaXjL4QTFB/Fl+Jd0Nu5MC4MWSkeqVKJzLlSZqylXmXR0Eo11G7Ou9zp0NcWNctWFlroW5nrmXE25yvWH12nWoBkaaqpxeli3bp3SEQShWhJto2rcSr/FxKMTqatZF9/evtSvU1/pSDWOJEl83vVzhu8djtcJL3a8uaNGfwASw1qEKlGwEIOapMbGPhvLPb92bZc/ZK1yaGto85rea2TnZXP94XVy83Ir7VhC2VTmv3tNIP4+QnEq+7WR+jgV9yPuZGRn4Nvbt/bcsKgAQx1D5nWZx8Wki6yLrNkfPCu1cy5JkoskSZckSbosSdKsYsqMkCQpRpKk85Ik7Xhi+0FJkpIlSfr1mfLHJUmK/PcnUZKkn//dLkmStObfY52TJEkMuKsmCk5eSVlJ+Pb2xUzPTOlIKklbW5v79+9X6ptNXc26mNU341HOI+JT48mT8yrtWELpyLLM/fv30dbWrvRjqeI5uyrahaCaKrvtZOdmMz1oOtdSrvFlzy/FAnpVoNdrvRjWchibozdz5vYZpeNUmkr73lqSJHVgHeAMJACnJUnaK8tyzBNlWgJegIMsyw8kSTJ6oooVgC7w0ZP1yrLc7Yn9dwG//Ptrf6Dlvz+dgPX//ldQ0OPcx0wPnM6V5Cus7b1WLMTwEkxNTUlISODu3buVfqysnCxuZt3khsYNDLQMxI1NCtPW1sbUtHJXF1TVc3ZVtgtB9VRW25FlmXl/zuOvm3+xyHERnY07l7yTUCFm2M8g9GYos0/M5qe3fipxGmBVVJmDSjsCl2VZ/gdAkqT/AoOBmCfKTADWybL8AECW5TsFD8iyfFSSJKfiKpckqT7QCyi4s2UwsPXfqWpOSZKkL0mSsSzLNyvwOQllkCfnMefEHP669ReLHRfj0MRB6UgqTVNTk2bNmlXZ8XZc2MGS0CUMen0QCxwWoCaJUXA1nEqes6u6XQgCwNcRX7Pvn31MtpnMoNcHKR2nVqmrWZcl3ZYw5uAYlp1exgKHBUpHqnCV+W7bBIh/4veEf7c9qRXQSpKkk5IknZIkqSxLRA4FjsqyXLC8YWmOhyRJrpIkhUmSFCautFSulWEr+e3ab0zvMJ23Xn9L6ThCGY2yHMXEdhPZe2UvK8NWimEDNZ84ZwtCKfz4949sitrE8JbDcW3rqnScWsnGyIZxbcbx8+WfOXr9qNJxKlxlds6L+h782Xd3DfK/0nQCRgLfSJKkX8r6RwLfP/F7aY6HLMt+sizbybJs17hx41IeSiirgPMBbIvZxnuW7/GBlZi2S1W5tXNjVOtRbIvZxqaoTUrHESqXOGcLQgmCE4JZeGohjk0cmdN5jhjypyD3du5YNrRkfsh87mXeUzpOharMznkC8OSdf6ZAYhFlfpFlOVuW5avAJfJP/C8kSVIj8r+C3V/G4wlV4Nd/fmVl2Er6Ne3HDPsZ4uSlwiRJYmbHmQxsPpCvI75m58WdSkcSKo84ZwvCC5y/dx7PPzyxMLDgix5fqMx0szWVpromS7stJSMng7kn59aob3crs3N+GmgpSVIzSZLqAO8Ce58p8zPQE0CSJEPyvzL9pxR1/wf4VZblrCe27QXe/3cGgM5AihhvXvX+TPwT75Pe2L9qz2LHxWKccg2gJqnh4+BDD9MeLPprEb9d/U3pSELlEOdsQShGQmoCE49OxEDLAN8+vmKdjmqiuX5zpneYzvEbx/nx7x+VjlNhKq3nJMtyDjAZOARcAH6QZfm8JEk+kiQV3D1xCLgvSVIMEAh8Ksvyfciffgv4EegtSVKCJEn9nqj+XZ7+ehTgAPlvEpeBTcDESnpqQjFi7scwPXA6zRs056ueX1XbVSaFstNU02Rlj5XYGtky+/hsTtw4oXQkoYKJc7YgFC05Kxn3I+7k5OWwvs96sU5HNTOy9Ui6GHdhZdhKrqVcUzpOhZBq0tcAZWVnZyeHhYUpHaNGiE+NZ/SB0Wipa/Hdm99hpGtU8k6Cykl9nMqHhz7kWso1NvXdhI2RjdKRajVJksJlWbZTOkdVEedsoao9yn3EhMMTiL4Xzaa+m+jwSgelIwlFuJ1+m2F7h2GuZ87W/lur7ZCj0p6zxZgD4aXdz7yP2+9u5Mq5bOizQXTMa7D6deqzvs96jHSNmHh0IpeSLikdSRAEoVLkyXnMPj6biDsRLHZcLDrm1dgrdV/Bu4s3Ufei2HRO9ScvEJ1z4aVkZGcw+ehk7mTcYW2vtTTXb650JKGSGeoY4tfXDx0NHdyOuBGfGl/yToIgCCrmi7AvOHz9MJ90+ASXZmWZNVRQgktTFwY2H8jGcxuJuhuldJyXIjrnQrll52XzyR+fEJMUw/Luy8UQh1qkSb0m+Dn7kZ2XjethV+5miPmnBUGoObZf2M7WmK2MbD2SMVZjlI4jlJJXJy8a6zbG64QXGdkZSscpN9E5F8pFlmU+//NzTtw4gXdnb3q+1lPpSEIVe13/ddb3Xs/9rPt8dOQjUh6lKB1JEAThpR25foRlocvoZdaLmfYzxXTAKkSvjh6LHRcT9zCOVeGrlI5TbqJzLpTL1xFfs/fKXia2m8jbrd5WOo6gEOvG1nzV8yuuplxl8tHJKn2lQhAEIfJOJLOOz8K6sTVLuy9FXU1d6UhCGdm/as/7b7zPzks7CU4IVjpOuYjOuVBmOy7sYFPUJt5u9TZu7dyUjiMorItJF5Z1W8a5e+f4+I+Pyc7NVjqSIAhCmV1LucaUY1N4RfcVvu71NToaOkpHEsppSvsptDRoydyTc3mQ9UDpOGUmOudCmRy+dpiloUtxMnPis06fia/7BAD6Nu2Ld2dvTt44yWcnPiM3L1fpSIIgCKV2P/M+7kfckZBY32c9DbUbKh1JeAla6loscVzCw8cPmR8yX+VWDxWdc6HUTt86zazjs2jXuB3Luy+vtvOICsp4u9XbeLT34Ldrv7EkdInKnQwFQaidMrIzmHJsCvcy7/F17695Te81pSMJFcCioQVTbKdwNO4ov1z5Rek4ZSI650Kp/P3gb6Ydm4ZZfTPW9l4rvu4TijTOehwfWH3Azks7WRu5Vuk4giAIL5Sbl8vM4zOJvhfN0u5Lade4ndKRhAr0/hvvY/eKHUtDl5KQmqB0nFITnXOhRDfTbuJ+xB0dDR029NlAA60GSkcSqrHpHaYzrOUw/M75sS1mm9JxBEEQiiTLMktClxAUH8SsjrPo/VpvpSMJFUxdTZ1FjouQkFRqyKXonAsvlPIoBbcjbmRmZ7LeeT3G9YyVjiRUc5Ik4d3Zmz6v9WH56eXsvbJX6UiCIAjP2XJ+Czsv7WSs1VhGWY5SOo5QSUzqmTC702zO3DmD/3l/peOUiuicC8XKysliyrEpxKfG81Wvr2hl0ErpSIKK0FDTYFn3ZXQy7sTck3MJjAtUOpIgCEKhA/8c4MvwL3Fp6sL0DtOVjiNUsoHNB+Js7szayLVcuH9B6TglEp1zoUg5eZ4V/XYAACAASURBVDnMCJ5B5J1IlnRbgv2r9kpHElRMHfU6fNXzKywbWuL5hyenb51WOpIgCAKnb51mzsk5dHilAwsdF6Imia5Qobw8yM5SOkWFkySJuZ3nYqBlgNdxLx7lPlI60guJV6TwnFvpt5h4ZCKB8YHM7DiTfk37KR1JUFF1Neuyvs96TOubMuXYFM7fP690JEEQarEryVeYFjgN0/qmfNXzK7TUtZSOVD3IMlzYB+s6wmpruBWtdKIKp6+tzwKHBVxJucJXZ75SOs4Lic65UEiWZfZd2cewX4YReTeSuV3m8p7le0rHqr6u/wlhm+FqMKTeyj+5Cc/R19Zno/NG9Oro4f67O1dTriodSRCEWuhuxl3cj7ijpa7F+j7rxeQGBa6HwLd9YedokCRQ0wD/AZAQrnSyCufQxIF3Ld5lW8w2Tt08pXScYkm1eS5iOzs7OSwsTOkY1UJSVhILQhZwJO4INo1tWOS4SMz1WpyEMDi2AP4Jenq7lh4YtgTDVk//NGwG6pqKRK1OrqVcY8zBMdRRr8O2/tt4te6rSkdSeZIkhcuybKd0jqoiztlCeaU9TmPswbHEpcaxxWULVo2slI6kvDsX4eh8uHQA6huDkxfYvAcPEyBgEGTch1E7oamj0kkrVGZOJiP+n73zDo+i6uLwO+m9hyRAQu+9KVVAQBEFBESU3gUkICgt0nsTqdI7goqoCAh+FAGp0pGilFCTQHov2+73xwRJSAJpm91N5n2efZLdvXPnbGDvnDn3nN/Z8yFJmiR2ddhVoDdp2V2zFedcWej54+EfTD09lThVHMPrDKdP1T6Ym5kb2izj48nfcGQW3NoPdh7QbDRUfhci70H4bQi/lfq4DXHBz48zswDXMqnOelrnvQLYuhju8xiAmxE36f97fzztPNncdjOuNq6GNsmkUZxzBYVXo9aqGXZ4GOeenGN5q+U0LVG4nM0cExMER+fA5W/BygGajISGw8DK7vmY2GDY0hGiH0K3b6FCa8PZqweuh1+n5289aVO6DfPfmF9g583umq20eCzCxKnimPfXPHbf3U0l10qsfWutosiSGeG34Y/ZcP0nsHaGNyfC60PB2kF+37U0lGuZ/piUuFSH/QWn/fb/QKd+Ps6+mOyoe1ZM77w7lQSzwpd1VsW9CsveXMaQQ0MYemgo699ej72lvaHNUlBQKKQIIZh8ajJnQs4wo8mMou2YJ0XDycVwZiXotPD6EGj2Bdi7ZxzrVBz67Yet78OOj+CDDVC1Q8HbrCeqeVRjSK0hLL+8nBYlW9CubDtDm5QOJXJeRKMwZ0POMunkJJ4mPmVA9QEMrTUUSyX1Ij1RD+DYPLiyAyxsoeFQaDwcbPMQ7dVqIPpBGoc91WkP+xeSo5+Ps7AFj/Lpo+weFcG9PFiafnfWo4+O8tkfn1Hfqz4rWq9QirJyiRI5V1B4OYsvLGb9tfUMrz2cT2p9YmhzDIMmBc6tg+MLICkKanwIb34pB5ZeRVI0fPsBBF2E91dCrW56N7eg0Og09DnQh3sx9/ipw08FkmqppLVkg6K40CdpklhycQnf3vyW0k6lmdV0FjU9axraLOMiNgT+XAgXNoNkBg0GQtNR4OCpv3MKIef3pXXYw2/JTnv0Q+DZ91QCF1/wqJQxTcbeQy7mMRH23N1DwIkAWvm1YmHzhViYKRt5OUVxzhUUsmbHPzuYfXY2XSt2ZVLDSUgmtD7mCzod/L0TjsyEmIdQ7k1oPRV8auVsnpR4OXp+/wS8twjq99eHtQbhYexDPtjzATU9a7KmzRq9y2oqaS0KGbgadpUvT3zJ/dj7dK/cnc/qfYathelHYfONhAg4sUiOMOg0UKcXvDEGnEvo/9ySJDvX9h5QqnH699RJEHE3vdMefgsenAR14vNxNi4ZI+0eFeXoiLnxfdXbl2tPTEoM887NY/rp6UxrPK3oXTwVFBT0wuEHh5lzdg4tSrYg4PWAorW2CAF3D8PBqfD0b9kZ77A0Y/pldrF2gB474Yc+sHeU7Kw3GZGvJhsKPyc/xjYYy7TT09h+czs9q/Y0tEmA4pwXCdRaNSuvrGT9tfUUsyvG2rfW0tCnoaHNMh6SY+DUcjjzjezs1uwGzcfJKivGgKUteFeXH2nR6SA2KKPTfucgXN72fJyZJbiXy1iM6l4BbJwK9rO8QM+qPYlOiWb11dU4Wzszut7oonURVVBQyHcuhV5i3J/jqOFRg/nN5xetXbngS3Bwsizx61IKuqyHap3zXsNkaQvdtsFPg+DgJFAlQIvxJrVbmxVdKnTh6KOjfH3haxr6NKS8a3lDm6Q454Wd21G3CTgRwD+R/9CxXEfGvTYORytHQ5tlHKgS4OxqOLlEzveu2hFaBECxyoa2LHuYmckpLi6+UL5V+veSoiHiTsa89n/3y7sCz3D0yei0e1QEpxIFtuh+WvtTYlJi2HR9E87WzgysMbBAzqugoFD4CIwOZPjh4Xjbe7O81fKiszscGSinr1zbBXbu0HYe1O8HFvlYz2NhJReG/moPx+aCKh7emmnyDrokSUxtPJUuv3ZhwokJbG+33eA1eIpzXkjR6rRsubGFZZeW4WjlyJKWS3jT701Dm2UcqJPhwkb48ytICIMKb8kKLDnNwzNmbF2gZH35kRatGqLuZ8xtv7oTUmKej7O0z9xpdysLljb5aqokSUx4fQIxqhiWXFyCs7UzXSt2zddzGCu65GS0kZFItrZYuCqykgoKeSE0MZQhh4ZgYWbBytYri4ZUa3yYXOh5foPcT+ONMdB4hP52Rc3MocNysLKH08vlINe7i0xeXczD1oOpjaYy4o8RrLi8gs/qfZblWPXTUJDAslgxvdmjOOeFkEexj5h4ciIXQy/Syq8VkxpOwt02E6mkooZWLeu6HlsgN1ko3UzWb/V73dCWFRzmlqmOdgXg3eevCwHxoRmd9odn4O8fno+TzOSt0hfz2j0rgZ1brs0yk8yY1XQWcao4ZpyegZOVE2+Xfjv3n9NACJUKTVQU2shINBGRaKMi0UREoI2IRBMVKf+MjEAbGYU2IgJdolwz4DlqFB6fDDaw9QoKpku8Kp5hh4YRnRLNxrYb8XX0NbRJ+kWVAKdXyDu/6iSo21tOM3EsgOZuZmbwznzZQT/xtZwO2vEbo6xtygkt/VrSpUIXNlzbwBsl36CuV90MY1Lu3uXhoEFY+hSn1LatekvDNO2/pEI6hBDsvLWThecXYiFZMLvpbN4r+56Sw6vTylt9f8yGqHtQoj68vwLKtjC0ZcaDJIGjl/wo0yz9e6qEzAtS7x0DTfLzcXbumTdaciklR1tegaWZJYtaLOKTg58w/s/xOFo60rhE41cep0+ERoM2OjpbjrYmKgpdbGzmE1lYYOHqirm7OxZurlj5+mHh7oa5qxvm7m7Y1ipEuzYKCgWMWqtm1NFR3Im+w/JWywt390+tGi5ukWV+459C5feg1RS5V0ZBIkmy8ouVg9wxW5Ugp7zkZxqNARjTYAxnQ84ScCKAH9v/iIOVw3/vJV68xOOhQ8HCAq+ACXr1rRQpxUIiy/U04SlTTk/hZNBJGvo0ZEaTGUp7dCHgn71yV8+wm+BVQ9Z2rdjW5HPkjAKdFmIeZWy0FH5LThd6hrl1JgWpqZrt1g4Zpo1VxdLvQD8exT1i7VtrqeWZf46r0OnQxsSkRrYj5J+RmTva2ogItDEx8v+jFzEzw9zVFQs3V8zd3NM52hZu7pi7uWLh7o65qxsW7m6YOTnpZSFXpBQVijpCCAJOBLA3cC8zmszg/fLvG9ok/SAE3PwVDk+X64n8GkGb6eD7mqEtk5saHRgvSzV2+zZ9p1ET5HLoZfoc6EOHch2Y0WQGAHFHjhA0ajQW3l74rVuHlW/udmYUnfNsUBgWeiEEv937jVlnZ6HWqhldfzTdKnXTu1anUSME3Dks382HXJZVSVoGQNX3TT4vzmRIjExfkBqW+jPqPgjt83FOJdM47c+d93ALC3of6CMXirbdRAXXCpmeRgiBLi4ug6MtR7kj0UZGoHnmcEdGoo2OBq0207nMnZ1TI9tumLtl7Wibu7tj7uSEZP7q3QB9ozjnCkWdItFk6MEpWYHl8TnwrCxHrI0tyHRxK/zqL980dP/e4EpgeWXpxaWs/Xsti1sspu6ZCJ5Mm4ZNtWr4rl6FhVvuUzgV5zwbmPpCH5UcxYwzMzj44CC1PGsxq+ksSjmVMrRZhuX+Sdkpf3gaXPyg+XhZGtHEc+EKDZoUiLyXMdIefhtUcQgBOo2EVudIiHVJFmkScUiS6O/YEAetE5pELdqoaNnRjoxEExUFanWmpzJzdEzvaKeLbKc62m5ymom5iwuSpel1yFWcc4WiTKFvMhR6Ew5NhVsHZGWtlgFQq7vxXs/+/hF+/gS8a0LPXXmqQzI0aq2aHvu602BfIO8dS8S++RuU/PprzOzytiugNCEq5Bx7dIwpp6YQo4phZN2R9KvWD/Ns5PUWWoIuyDJSd4+Agze0Wwh1+8jSTwoGRZeU9DyqHZk2oi3QRriiiayANtIdTXgY2qgohOqZsx3NkNTfVBwjykKHhbUOcwcrLJ0dsCnrhkWx8pj7lMLCtwLm3n6yo+3ujrmrK2ZWyr+9gkJhpVA3GYoJkmukrmwHK0c5p/z1IcafLlLjA7C0g519YNN70PsXcNCfook+sRASM06UQHfsGjcaetNp2bICvaYozrmJEa+KZ/65+fx852cqulZkdZvVVHKrZGizDMfT63JO+b/7wNZN1lxtMFBumKCgF3QqFdoMjnaU/DMiMr0jHhmJSEzMdB7J2jpdRNu6QoWMEW03d/5VBzL88lS8HdzY4NYYp8j7cqQ94jxoVRCD/LjnmSY9ptLz3519lXQmBYVCRKFtMpQUJaufnF0NQgcNh0Gzz00rAl25HXT/Ab7rDhvaQu/dci8OE0KXlETQqNHojh4l5IMmTC1/Bu29X/iw0ocFZkMh+R9dNDj35BwTT0zkSeITBtYYyNBaQ7EyL6LRwYi7cmTh2i6wdoSWX0LDofLvCjlCqNVyAWTUs9zsrBxtWalEFx+f+USWlmkUSdywKlVKTitxf+5oP4tsW7i5IdnZZSvaVZvqzPfy4NMjn+KvfsCqzqvlxiI6LUQ/eN5g6Vl6zI3d8kXuGRY2ct3Bi7nt7uWNPxKloKCQjkLZZEidDOfWwvGFcsfqmt3kFBZXE01TLdcSev0M33aFje/IDrp7OUNblS00UVE8HjKUpKtX8Z4ymUofdaPRwSEsPL+Q17xfo7Rz6QKxQ8k5N4H8xWRNMksuLmHbzW34Ofoxq+ksaherbWizDEP0Q1lC6vIOWbLp9SHQ2N+0Igt6Rmi1siJJpo62rEjyzNHWRkbKiiSZYW6eqkgi522/6Gg/K5R89r6Zo6Net5YP3D/A2GNjaVayGYtbLsbS7CU54gkRafLa0+S2Rz+QI1LPcPaTnXXPSunVZOw9javYKguUnHOFokRoYig9f+tJijaFbe22mb6WuU4LV3+AP2bJylflW8vFnt41DG1Z/hB8GbZ2kvtr9N4NxaoY2qKXonocxKOBA1EHB1P8q4U4tWkDyGp4nX/tTCmnUmx+Z/PLrz2vQCkIzQamsNBfC79GwIkA7sXc46NKHzGq3ijsLItgtC/uKfy5EC5skp/XHwDNRptsPltOEDodutjY9I72M83ttI72M4WS6GjQ6TJOJEmYu7hk7Wg/kwR8VkTp7IxkZOkgO2/tZPrp6bQr0445zebkXJVInSy3uQ7/N6MEpDpN+o2Nc8buqB4VwbW0fKExEhTnXKGoEK+Kp++BvjyMe8jGthtNW8tcCLhzSC72fHoNfGrLsohlmxvasvwn9CZseV9OQez1ExSvY2iLMiX55k0eDh6MSFHhu/Ib7OrVS/f+gfsHGHNsDMNqDWNo7aG5Po9RFIRKktQWWAKYA+uEEHMzGfMhMBUQwBUhRPfU1w8ADYETQoj30oyXgJlAV0ALrBRCLJUkqQWwG7iXOvQnIcR0PX00vaPWqVl9ZTXr/l6Hh60Ha9qsoVHxRoY2q+BJjISTi+HsGvnLXacnNB8LziUNbVmuEUKgS0iQI9uvcLQ1kRFoo6JBo8l0LjMnp/8cbavSpbGtWy9TR9vC3V12ti1MO5Ota8WuxKTEsOTiEpytnZnwWg4bQVjagFdV+ZEWnQ7igjM2Wrp7RO4q+wwzC3Arm16v3aMieJSXHXojQ5IkM8BBCJFFd6QM45U1W8HoKFRNhoIuwMEpcP9P+Wb/gw1QtVPhrYspVgX6/QZbOsLmDtBjJ/g1NLRV6Ug4fZrHw/0xc3Ki1MaNWJcvn2FM29JtOfboGKuvrqZJiSbU9KypV5v0dqWWJMkcWAG0AR4D5yRJ+lUIcSPNmArABKCJECJKkqS0YdAFgB3wonBpX8AXqCyE0L1wzJ9pLwqmyp2oOwScCOBm5E06lOvAuNfG4WRl2pqhOSY5Vm5NfHoFqOKhRle5NbGR5q3pEhPTqJFkEdH+T4c7ApGV/J+9vRzRdnXFskQJbGpUz9zRdnXDwtUFqQgqkgyoPoCo5Ci23NiCi7ULw2oPy/ukZmbyDZ9zSbmRRlqSYyHidsbc9lsHQJfmpsnBO2N3VI+K4FSiQC+8kiRtB4YgO8IXAGdJkhYJIRa84jhlzVYwOoQQTD41mTMhZ5jRZAZNSzQ1tEm5I+KuLPN7/Wew84B3FkC9vkVDUcy9HPQ/IDvnWzvBR9vlvHQjIGbfPoLHT8C6dGl8167B0jvr5o0TXp/A+afnCTgRwA/v/aDXLIZXOueSJJUDHgshUlIjHTWBLUKI6Fcc+hpwRwgRmDrPd0BH4EaaMYOAFUKIKAAhROizN4QQh1PP9yJDge5CyImjaY8xdbQ6LVtvbGXZpWXYW9qzuMViWpVqZWizChZVIvy1Ro6WJ0VBlfZysaeR5appY2MJW7yY+KPH0ERFIZKSMh0n2dj8F9k29/TAulKl9N0k0za3cXPDzNq0Wx8XBJIk8UX9L4hJiWHllZU4WzvTo0oP/Z3QxglK1JMfadGqIepBxrz2az/KRV3PsLTL3Gl3KydH8vOfqkKIWEmSegC/AeOQnfSXOucoa7aCEbLk4hL2Bu5leO3hptn9Mz5MrpO6sBHMreCNsXKdlIk36ckxziWh337ZOd/+IXTdLCu7GJCIjZsInTcPu/r1KfnNCsydXv5v4mTlxOymsxnw+wAWXVjExIYT9WZbdiLnu4D6kiSVB9YDvwLbgVf9VUsAj9I8fwy8/sKYigCSJJ1E3kadKoQ48Ip5ywHdJEnqBIQBI4QQt1PfayRJ0hUgGPhCCHH9FXMZDY/iHjHxxEQuhl6kpW9LJjeajIeth6HNKjg0KXBhs5xXHv9ULox5c6LR5acJIYj7/XeezJqFNiISxzZtsPTxSW1ukyaynZrXndeGBQqZI0kSUxtPJU4Vx9y/5uJk5UT7cu0L1ghzSzmdxaM86ZZDISAhPNVhT5Pb/uis3KSDZ3U+kqzG4FER6vSCqh3yyzJLSZIsgfeB5UIItSRJ2SkuUtZsBaNixz87WH9tPV0rdmVwzcF5ni/55k1ifvkF94EDsfD0zAcLX0JKPJxeDqeWgToJ6vWRm+I5eun3vMaMoxf03QvbusD3PaHzGlkbvYAROh2h8xcQuWkTjm+/TfH587IdGGvg3YCBNQbiZOWEEEJvIgjZcc51QghN6sK6WAixTJKkS9k4LjOLX7xAWAAVgBZASeBPSZKqvyIqbw0kCyHqS5LUGdgANAMuAqWEEPGSJLUDfkmdO71RkjQYGAzg5+eXjY+hX4QQ/Hj7RxacW4C5ZM7MJjPpUK5D4Wqo8DK0GrnRwrH5crV6qabyHXUp48uvVwcF8WT6DOKPHcOmalV8V67CtroJ5z6aOBZmFsxvPp9hh4Yx6eQknKycaO5rBAVVkgQOnvKjdJP076kSIfJuxtz2pMj8tGA1cB+4AhyXJKkUkJ2cc2XNVjAa8rvJUEpgIA/7D0AbFUXMnr34zJqJY0s9pFZo1bJwwbF5kBAGVTrITYQ8MuYxF0ns3GTllh0fwa6BciF+3d4FdnqhUhE8IYDYfftw7dkTrwnjkcxz1sBxRN0RerIuDUKIlz6As8DHwDWgTOpr17JxXCPg9zTPJwATXhizCuib5vlhoEGa5y2AvS8c8w9QOvV3CYjJ4vz3AY+X2VivXj1hSJ4mPBVDDg4R1TdVFwN+HyCC44INak+BotUKcXWnEEvqCDHFSYjVLYS4c1gInc7QlmVAp9GIiE2bxM06dcXN2nVE+IaNQqdWG9oshVTiUuLEh3s+FPW21hPnQs4Z2pwCBTgvXrEWy8OwyMYYZc1WMAouPLkg6m6pK7rv7S4S1Yl5nk8VFCRuNW8h/m3cRMQeOSLudnxf3KhUWQRPnSq0iXmfXwghX7uu/fz8mrbhHSEe/pU/cxdGUhKE2NJJ/lud/qZATqmJixP3+/YVNypVFmFr1gidAfyN7K7Z2alS6pe6aM8SQtyTJKkMsC0bx50DKkiSVEaSJCvgI+SUmLT8ArQEkCTJA3nLNPAV8/4CPKvYag7cSj3eO1UVAEmSXgPMgIhs2GkQ9t/bT6fdnTj/5DzjXxvPmjZr8HHwMbRZ+kcI+GcfrGoKuwbIDWI+2g6DjsiFeEa2Y5B84wb3P+zG0zlzsatfj7J79uDer6/Jq54UJhysHFjZeiU+9j74H/HnZsRNQ5tkUCRJGilJkpMks16SpIs8XzNfhrJmKxicwOhA/I/44+Pgky9NhjSRkTwcMBBdfDx+69bi2LIlpX/4Hrd+/Yje8R33unxA8o0br57oZdw/AetayW3rza3g4++h7z7wbZC3eQszVnbw8Q6o/B4cGC83YNIj6tBQHvTqTeK58xSfNxePQYOMO0MhOx68eB7ZcAVq5mB8O+SF+C7wZepr04EO4nkUZRFywdHfwEdpjv0TOT8xCTn38e3U112AfanjTwO1Ul8fDlxH3so9AzR+lX2GiMJEJUWJz49+Lqpvqi667+0u7kXfK3AbDIJOJ8TtQ3KEfIqTHF24ulOOoBsh2oQE8WTuPHGjajXxb5OmImbfPoPcZStkn5D4ENF6Z2vxxndviPsx9w1tToFAJlEYZHlDgLeRnetawMUXx2X2UNZsBUPyNOGpaLOzjXjjuzfEw9iHeZ5PExcnAjt1Fjdr1RYJ589neD/+5Elxq2kzcaN6DRG+br3Q5fR69OSaENu6yte0r6oIcXGrEFpNnu0uUmjUQuwaJP8ND07Ry+558t1AcfvNVuJmnboi7vif+T5/Tshszc7s8comRJIkHQU6IOcaXk5dfI8JIUa/9EAToKAbWhx/fJwpp6YQnRLNsFrD6Fe9HxZmRSAC++C0LCH14CQ4+0LzcVDrYzA3zs8ef/w4T6ZOQx0cjEvXrhT74nPMnY1Pw1ohI/di7tFnfx9sLWzZ/M5mvO2zlsUqDGTW0EKSpKtCiJqSJC0BjgohfpYk6ZIQwriqq3OB0oSo8JLfTYZ0yck8GjSYxEuX8F2xHIfmmdejaKKieDJ5MnEHD2HXsCHF5855qZweANGP4OgcuLwdrJ3khnivfwKWeYvyF1l0Otg3Wla0aTAI3pmfb/KzSZcv82jIUDA3x3fVKmxrVM+XeXNLfjYhchayLNdAYKMQYookSVfzbmLRIUGdwIJzC9h1exflXcqzsvVKKrtVNrRZ+ifootyW+M4hcPCCdgvlwg8L45QL1ISH83T2HGJ/+w2rsmUptW0rdvWLTPPFQkEZ5zKsbLOSAb8PYMjBIWxquwkXGxdDm1XQXJAk6X9AGWCCJEmOQCYtYxUUjIP8bjIkNBqCRn9O4vnzFJ8/P0vHHMDC1ZUSS5cSs2sXT2bNJrDj+/hMn47T229lHJwUBX8ugrOr5eeNh0PT0XKRo0LuMTOD974GK3tZ4UadCO2X5jmAF/fHHwSNGo1FsWL4rVuLlQkVlGfnk1tIkuQDfAh8qWd7Ch3nnpxj0slJhCSE0L96fz6t/SlW5oW86UDoTTgyE/7ZC7auclviBoPkHDMjRAhBzK5dPJ2/AJGUhMfw4bgPHoRZEWzwUxio5l6NZW8uY8jBIQw7PIx1b63Ta7MII2QAUBsIFEIkSpLkjlw7pKBgdAiRv02GhE5HyJcTiT9yBK9JE3Fu/+oeV5Ik4fLBB9jWq0fwmLEEjRxJfJfOeAcEYGZvL0sh/rUG/vxKbkpW6yNoGQAupuPsGT2SBG/NBGtHeVdClQCd1+a6SVPUzp08mTJVVlZbvQoLd/d8Nli/ZMc5nw78DpwUQpyTJKkscPsVxxR5UrQpLL24lK03tlLSsSSb2m6iTjGT31V+ORF34ehc+HsnWDlAiwnQcJhRN1tICbzHkylTSDx3Drv69fGePg3rsmUNbZZCHmng3YAFzRcw+uhoRv4xkhWtVhT+m+JUhNyFsyTQPbXg6ZgQYo+BzVJQyJT8bDIkhCB03jxidu/Gw384bj1y1pzMukwZSu/YTtjyFUSsWUPiX+coMbg1to82Q+xjKN8GWk8Fb8OmRhRaJEnuBG5lD/+bKN8Ufbg5R+lCQgjCv/mG8GXLsW/WjJKLv5ZvsEyMV+acF2b0lb94Pfw6AScCCIwJpFulboyuN7pwR+5iHss65Ze2yZXqrw+GJp8Z9VafTqUiYu1aIlatRrK1xWvsGJw7d0YqwDbrCvpn953dTDw5kTal2rDgjQWYm+VMz9bYySLnfC7QAPg29aWPkYuQJhS0ffmNknNeuNjxzw5mn51N14pdmdRwUp7VM8JXriRsyVJce/fCa8KE3M8nBIk/ryRoznI08To8GzniHrAAqXyLPNmnkAPOb4C9o6F0U/j4O7B2eOUhQqPhyfQZRP/wA87vv4/PjOlIlpYFYGz2ybec89QIzDKgCXJDihPASCHE4zxbWchQ69SsvbqWNVfX4G7rzurWq2lcorGhzdIf8aHyNt/5DfLzBgOh5cG6owAAIABJREFU2edG3wEt8fx5QiZPQRUYiFO7dnhNGK//bnEKBqFj+Y7EpMSw4PwCZpyZwZRGU4xbPit/aAfUFkLoACRJ2gxcQtYtV1AwCv5rMuSbP02GIrdvJ2zJUpw7dsBr/Pjcz/f4AhycjN2DE5T9sAxP/qlE2MmrxE9ZR/F5FbAqWSJPdipkk/r9wdIefhkKW9+HHjvlNNks0CUlEfT5F8QfOYL7J5/g+dlIk17rs5PWshHYDnRNfd4z9bU2+jLKFLkbfZeAEwHciLjBe2XfY/xr43G2LqQKH4mRcGqpXBSjSYHa3WUFFhdfQ1v2UrQxMYR+tYjoH37AsnhxfNesxuGNNwxtloKe6V2tN9Ep0az9ey3O1s6MqjfK0CYVBC7As7ajhXQhUjBVLj69yNjjY6nhWYP5b8zPs2pZzN59PJ0xE4eWLfGZOTN3O6ARd+HwNLixG+w9od1CzOv1pbiZBQ579vBk2nTuvf8+3lMm49y+fZ7sVcgmtbrJtWo7+8Hm9tDrF7D3yDBMExXF46HDSLpyBa9JE3OczmSMZOcb4SmE2Jjm+SZJkj7Tl0Gmhk7o2HpjK0svLsXO0o5FLRbRplQhvW9JiYPT38jV1ClxUOMDOa/cvZyhLXspQgjiDhzgyazZaCMjcevXD0//4ZjZFeJUI4V0+NfxJyYlhg3XNuBi7UK/6oW6PnIOcEmSpD+QdcnfQImaKxgJ6ZoMvZn3JkPxx44RPH48dvXqUeLrRTlPY4gPlWulLm4Gc2toPl5WYbF2BOQvkHOHDtjWrUvwmLEEjxlL/LHjeE+ZjLmjY55sV8gGVdrLaS3f94CN70Dv3eBU/L+31UFBPBw0GPXjx5RYvDhzlR0TJDvOebgkST2BHanPP0bp4gZAUHwQE09M5PzT87Qo2YIpjafgYZvxrs7kUSfBX2vhxNeQFCl39GoZAF55k7sqCNRBQTyZPoP4Y8ewqVYN39WrsK1m/HYr5C+SJBHwegCxqlgWXViEs7UznSt0NrRZekEIsSO1P0UDZN9iHGSrG7SCgl4JTQxlyKEhWJhZsLL1Slxtsk5TyA6JFy7weORnWFesQMmV32BmY5P9g1Pi4NQyOLUctClQry+8MTbLtEyrkiUptXUL4WvWEL7iG5IuXqT4/HmK3G5BUKE19NwF27vBhrbQ51dwLU3yP//waNBgdCkp+G1YX6j+LbLThMgPWA40Qs45PwWMEEI81L95+iU3xUW65GSwsuKXu78w7695SJLEuAbjeL/8+yad35QpGpUcTTi+EOKfQLk34c2JUKKeoS17JUKjIXLbNsKWLgMh8Bw5AreePZEsjLPxkULBoNaq8T/iz+mQ03zV/Ctal2ptaJPyRHaLiyRJeiiEMHndN6Ug1HTJ7yZDyf/8w4NevbFwd6fUt9uyL5X37Lp2bB4khEHV96HV5BztACddvkzQmLGog4Jw/2QwnsOGGV3hYaHk8QXY1hks7UioPoPHX87DzMEBv7VrsK5QwdDWZYtsr9m5UWuRJOkzIcTiXFlmRORmoQ/8/DMC/znDmobxOLz2GjObzKS4Q/FXH2hqPDgNPw+G6Ifg1wjenASlmxjaqmyRfOMGIZMmk3z9Og7Nm+M9eRKWJZQiHgWZRHUigw8O5kbEDVa0WkGj4o0MbVKuyYFz/kgIYdxFIdlAcc5NE7VWzbDDwzj35BzLWy3Ps5a56sED7veQgy2lt3+LZfFMrsE6LcQ/lbt5xjySr2Uxj+DuHxB1D0o1lXtwlMxdsEkbn8DTWbOI+flnbGrWpMT8eViVLp2nz2UMJKm03AiJQasDnRDodAKdAK0Q6FJbyz97L+3v/z108tiM4+R5no8FrS6TcSLNOF36cToBnom36XbkCyJPWRLn7sWe3pOJc3T7z0aRwYYXzpvmvRfnlsc+ty8rG7RC0KisO0s/zrk8dn52CM2M0YDJO+c5RQjBz7Y3aPQ0lmnfCuzuSbh6h0GtQuacP/kbtn8oF8X03AXlWsn6o0aOLjGRsGXLidy8GXM3N0p8vQjHtm0L346GQp6ws7RjRasV9D3Ql5F/jGT9W+up4VnD0Gbpm6KrmatgUPK7yZD66VMe9h8AGg1+S2ZgmXwLLh5OdcDTOOKxwaBTpz/Y1g08K8vt4Su0ydN1zdzBnuJzZuPQ/A1CJk8hsHMXvL8MkCV5TfSa8zgqkb4bz3EnNN4g55ckMJMkzCUJSQJzMwmzF35/55/zRF6wwsJTR8VmtwkNv8U/0ZWfj5MyHmNmJmH2wtwW5mYZx0lpxplJz+0xSz+3mRlU8tJvvUFuI+dFNgpzI+IG1hoJl9/OErFmDdqoKBxatsRzhD82VaroydICJOo+rH8LzCxgwP/AuaShLcoW8ceP82TqNNTBwbh8+CHFPh+NubMiUqGQNWGJYfTa34t4dTyb226mnItxFzZnRtoojCRJy8jcCZeAPkII4+0Glk2UyLnpsfjCYtZfW49/HX8G1xyc/QNT4jJEvbXB93iw5jLqWDV+LSOwdVOlOUCSCwWdfWXlsP9++qX+LCk3t9ED6pAQgseNJ/Gvv3B86y28p03FwjVv+fQFzbWgGPptOkeKWsv0jtXxdLR+7pCmcW4zc1zNJLmuJ63zavbC7/85zWZkPi51jqwQOh2hC78icsMGHN96i+IBwzH7vqtc0Nv9eyjTrAD/WrlH32ktSv4ioEtIIHLrNiI2bEAXG4tj27Z4+g/HupzpXeQBSAiXHfPECOj/OxSrbGiLXokmPJyns+cQ+9tvWJUrh8+0qYWqKERBvzyKfUTvA70xk8zY+s5Wk0tRe8E57/OysUKIzQVjlf5QnHPTYvvN7cz5a07GJkNCyNeZZ6km/znhjyDmofwzOTrdXDqdFQ+OeZISDr4DamNft1Z6J9ypBJgbLu9baLVEbtxI6JKlWLi6UnzeXOwbmUbK3B//hvLptxdxtbNiU78GVNBzVDinCJWK4C8nErtnD67du+P1ZQCSuTnEhsga6FH34cOtUNH4lVry7JxLkhRH1lEYWyGEyVfW5ddCr42NJXLTJiI3bUaXnIxz+/fw+PRTrPxM6P4lJV7WEQ29KUsV+b1uaIteitDpiN61i9AFCxFJSbgP+QT3QYMwsyoaLdoV8o9/I/+l3+/9cLNxY1PbTSaluJTdhb6woDjnJoJOy6F/djL63GyaO1Xga7fXsIgNTu+Ea5LSH2Pl+ELE+3nkW2fnxeMx00g4c4aSS5fg2Np4C7mTrl8n+IsxqO7dw61/fzw/G2nU16Xv/nrIl79co7K3Ixv7NqCYUw4UbwoAbXwCQSP8STh1Gs9Ro3AfPCh9hD0hArZ1gqc34IP1ULWj4YzNBnqNnBcW8nuh10RFEbFuHVHfbkdoNLh06oTH0CGZF6sYExoV7PgIAo/CR99CpXcMbdFLSQkM5MnkKSSeP49d/fp4T5+GddmyhjZLwYS5FHqJwf8bTGnn0mx4ewOOVsYVOcoKxTlXMAjqZIh5/DzK/UL0+2JKGIO8PKisUrHuSSi2QoCdRxqn2y+jE27jkmkOuNBqCRr9OXG//47P7Nm4dO5kgA+cM3RJSTydN4/o777HukoVSixcYHQ76kIIFh28xbIjd2he0ZMVPeriYG1cMVdNWBgPP/mElH9v4TNzJi6d3s98YHIMfNsVHp+DjivkxohGiuKcZwN9LfTq0FAi1qwl+vvvAXDp1g2PTwYbZ4t4nQ5+GQJXv5f/U9fpaWiLskSnUhGxZi0Rq1cj2driNXaMXHyTm25wCgovcCLoBP6H/anpWZPVbVZjY2FcEaTMUJxzBb2QHJN5qsmz5wmh6cdLZnJaibMvgY7u9Eq6iaulPVtrj8bVo2pqvnfOm74JIXgyeTLRO3+k2LhxuPfrmz+fr4CIO3KEkC8noktMpNi4sbh+/LFRFIuqNDrG77rKT5eC6Fbfl5mdqmNpblzX0ZR793g0aDCaiAhKLln86m7eqgTY8THcOwbtFsJrgwrG0ByiOOfZQN8LvTo4mPCVq4j+6SckS0vcevbAbcAA4yoU+f1LueNnq8nQ7HNDW5MliefPEzJ5CqrAQJzefRevCeOx8DCd9AMF02D/vf2MOz6O5iWbs6jlIizNjFu7WHHOFXKMELK+d2ZO97OfKTHpj7GwkR3sDEWWqc8di4O5BaGJofT8rScp2hS2tduGr2PedCNCv/qKiLXrcP/kE4qNMs3G5JqwMIInBJBw4gQOzZvjM3tW9jXZ9UBsspqh2y5w8k4En7epyPA3yxvFDUNakq5c4dGQoSBJcuPAGtlU01Inw86+cGs/tJ4GTY3v/4zinGeDglroVQ8eEP7NN8T8ugczOzvc+vTBrW8fzJ0MLJ5wcikcnASvfQLvzDNKuURtTAyhC78ieudOLEuUwHvqFByamUZVtoJp8v0/3zPz7Ezal23PzKYzMZOMK6KUlswWekmSlmYyNAY4L4TYXTCW6QfFOc8GWg3EBmWUFvzv+WO5I2ZarJ2zzPfGxVeW1X3F9SG/mwxFrF9P6IKFuHzUDe8pU4zOgcwJQqcjatu3hC5ciJmjoyzB+KpIsB4IiUmiX6pU4rwuNelSz/jU2OKOHiVo1GgsPDzwW7cWq1KlcjaBVg0/DYbrP8kdX1sGGJVvozjn2aCgF/qUO3cIW76CuAMHMHN2xr1/f9x69sDMXj/yTi/lynfw8ydQrRN02QBGlhoihCBu/36ezJ6DNioKtz598Bz+KWZ2Od8aVVDIKauvrGb55eX0rNKTsQ3GGq1jkIVzvgaoDOxMfakLcB3wBQKFEMYXTsominMOqBJfmu9NXDAIXfpj7ItlIS/4LN87b7Kzz5oMnX9ynmWtluVZyzz6xx8JmTgJp3bvUHzBAlmZoxCQ/O8tgr/4gpTbt3Ht2ZNiX3yOmU3BpM/dDIml38ZzxKdoWNWzHk0rGN/Oc/SuXYRMnoJNpUr4rlmd+91xnRb2jIBL26Dhp/D2LKNx0POtCVEWqi0xwHngcyFEYO5MLHpYly9PycVfk3xjEGFLlxH29ddEbt6M++BBuH70UYF9Sbl9CHZ/CmWaQ6fVRueYq4OCCJk+nYRjx7GpVg2/NauxqVrV0GYpFCEG1xxMdEo0225uw9namSG1hhjapJxQHnhTCKEBkCRpJfA/oA3wtyENU3gFQsgSghmc7jSR78Tw9MdI5uBcQna4yzR7IfrtJ+eCW+rv2pLfTYZif/8fIZOnYN+sGcXnzi00jjmATaWKlP5xJ6FffUXUlq0knj1D8YULsalUSa/nPXE7nKHbLmBvbcHOIY2o4mNcLQ+EEESsWkXYkqXYN2lCiSVLMHfIQ9DSzBzaLwMrBzizAlRx8N5i+XUTITuluYuAYGA7soziR4A38C+wAWihL+MKKzZVq+K7aiVJly8TtnQpoXPnEblhIx5Dh+DSpQuSPmWXHp+HH3pBsarQbRtYWOvvXDlEaDREbt1G2NKlIEl4TRiPa48eSBbGVUGuUPiRJIkxDcYQq4plxeUVuFi78FHljwxtVnYpAdgjB1FI/b24EEIrSVJK1ocp6B2dTm4pnyHVJDXdJPqR7EikxcL2ubPtUyuj2omjj0GdjiUXl7A3cC/+dfx5v3wWahrZJOHUKYK/+ALbWrUouWSxfq+FBsLM2hrvgAAcmr1BcMAE7n/QFc/PR+PWu7dexA12XXjMuF1XKV/MgY39GuDjbJvv58gLQqvlyYwZRH/3Pc4dO+AzY0b+/LubmUHbubKD/udCecep0yqDauHnhOx4PW2FEGlFr9dIknRGCDFdkqQAfRlWFLCtXRu/DRtIOPsXYUuX8mTadCLWrsPj009x7tgh/53S8Nuy3JBDMei5C2yM5+456fp1nkyaTPKNGzg0b4735ElYlihhaLMUijBmkhnTGk8jVhXL7LOzcbJyol3ZdoY2KzvMBy5LknQUOaDyBjBbkiR74JAhDSv0aFSZ5HunKbyMDQKtKv0xNi6yk+1aBsq8kTHybeduNFvyL7L95nbWX1tP14pdGVQjb+oYSVeu8Gi4P1ZlyuC7amWhT2F0aNaUsrt3EzJxEqFz55Fw/E985szB0qtYvswvhGD5kTt8dfAWTcq7s7JnPZxsjMsx1SUnE/TFF8QfOoz7oIF4jh6dvymEkgStJsmdYQ9PA3USfLBBrztJ+cUrc84lSToNfA38mPrSB8BoIURDSZIuCyFq69lGvWFM+YtCCBJOnCRsyRKSr13DqlQpPPz9cWr3Tv7cTceGyN0/NUly909349Bc1SUmErZsOZGbN2Pu5ob3xC9xfPtto83xVSh6JGuSGXJoCFdCr7DkzSW8UbLgC7myIqv8RUmSfIDXkJ3zv4QQwQVunB4w+JqtSsiiyPJZvncI6bNAJXD0fkHp5IXIt7VpaOq/yKEHhxh9dDTNfZvzdYuvsTDLfTAp5fZtHvTshZmTE6W+3YZlsfxxUE0BIQTR3//A07lzMbOxwWfmjDw3WVJrdUz65RrfnXtE57olmNu5JlYWxpW+qo2O5tGwT0m6dAmvgADceulZxvnsGtg/Bsq2lPu5WBmg1o98LAiVJKkssAR41of2NDAKCALqCSFO5NFWg2HwhT4ThBDEHzlC2JKlpNy6hXWFCniM8MexdevcO6xJ0bCxHUQ/gL77oLhx3E/FHzvGk2nTUQcH49KtG8U+H214BRsFhUyIU8Ux4PcB3Iu5x+o2q6nrVdfQJgEvdc47IEfMAY4JIfYUrGX6Qa9rthCQGJmm0PJxRic8KTL9MWaWqfneWTTWcSphVKmD+cXFpxcZ9L9BVHavzLq31mFrkftUCdXjIB507w5CUGr7t1j55k1+0VRJCQwk6IsvSLlxE5cPP8Rr/Lhc7R7Ep2j49NuLHLsVhv+b5RndpqLRBbvUwcE8HDQY9cOHFF8wH6e2bQvmxJe2wa/+4Ps6dP8+z4XQuUFRa8kGxuicP0PodMQdOEDYsuWo7t3Dplo1PEeOwL5Zs5x90dTJsK0zPPoLeuyEci31Z3Q20YSH83T2HGJ/+w2rcuXwmT4Nu3r1DG2WgsJLiUiKoO+BvkQkRbCx7UYquem3iCs7ZKHWMhdoAHyb+tLHyDKKEwravvwmT2u2TgtxT7JurBPzGNQJ6Y+xtM9EYjCNE+7gZVJFZvlBYHQgvfb3wtXGla3vbMXVJvd9OzTh4dzv0QNtVDSltm7FplLFfLTU9BAqFWFLlxKxfgNWpUpRfMECbGtUz/bxobHJ9Nt0jn+exDHz/ep8/JqfHq3NHcn/3uLRoEHokpIouXw59q+/VrAGXP8Zdg0Er+rQ62ewcyvQ0+dn5LwksAxogrxfdwIYKYR4nB+GGhJjds6fITQaYvbsJXz5ctRBQdjWqYPnyJHYN3z91QfrtLCzD9zcA13WQ40PsnXOyAQVa/8M5N8ncSz+qHa+5akJnY7oXbsIXbAQkZSE+9AhuA8ciFkhLPpRKJwExwfTe39vNDoNW97Zgp+TYS9+WTjnV4HaQsh6epIkmQOXhBA1DWFjfpKrNfv8BjixGGKDQadO/56t20tayvuBravR5nsbgmdNhlRaFVvbbc1TkyFtbCwPevdB9eABfhvWY1enTj5aatoknDlL8LhxaCIi8BwxAvcB/V+pWnP7aRx9N54jKlHFih51aVnJ+FKDEs7+xeNPZUlk37VrDXczdut3+L4XuJWF3r/IqWcFRH465weRlVq2pr7UE+ghhGiTZysNjCk4588QKhXRP/1M+MqVaJ4+xa5RQzxHjMh6QRMC9o6CCxuh7Txo+GopuMgEFev+DGTzqfskqrVIQOsqXqzuVS/P22IpgYGETJ5M0vkL2DVogPe0aViXLZOnORUUDEFgdCB9DvTB3tKeLe9soZid4S6CL3HOWwghIlOfuwFHi6xzfnMPXP8loxPuXBKsHfRjaCEkP5sM6ZKSeDhwEElXr+L7zTc4NMub/GJhRBsdTcjUacQdOIBdgwYUnzcXy+LFMx17JjCCwVvOY21pzsa+DaheouDTNV5F7IEDBI8Zi6WfH35r12T5WQqMwGOw42Nw9ILeu+V1oQDIT+c8Q9GnqReCPsOUnPNn6FJSiP7+e8JXr0EbEYFD8+Z4jPDHttoLC+XRuXB0DjQdBa2nvnTOqNRI+TOn/L2axRnxZnmO3Qpj5r6bjH+nMkOa566AVKdSEbFmLRGrVyPZ2eE1dgzOnTsbXQ6cgkJOuBZ+jQG/D6C4Q3E2td2Es7VhLoZZOOcfA3OBP3iu1jJBCPGdAUzMV0xxzS4M5GeTIaFW83i4P/HHj1Ni0Vc4vfNOPlpauBBCEPPzLzydORPMzfGZNhWndukVo369EswXP1zBz92OjX0b4OtmfCo3kVu28nTOHGzr1MH3mxWYu7gY2iSZR3/Btg/kouw+vxaIUEZ+OueHgE3AjtSXPgb6CSFa5dVIQ2PKC70uMZHIb78lYt16dDExOL71Fp7+w7GuUAHOrYd9o6F2T+i4PMtt2ehE2SnfdFJ2yt+t4cPIVhWo4CWrBwghGL79EvuvhbBt4Os0Lpezbl2J588TMnkKqsBAnN59F68J43Pf8UtBwcg4E3KGYYeGUcW9CmvbrMXOsuAviq9Qa2mA7JyfBcwKg2KLKa/ZpopO6Ag4EcC+wH3MaDIjT1rmQqcjeOw4YvfuxXvaNFy7fZiPlhZeVA8fEjRmDMlXruLcsSNekyZiZm/P6uOBzN3/D6+VcWNtr/o42xmXVKLQ6QhbtIiIdetxaN2KEgsXFlyzxewScgW2dpKbefXeDV76bXiYn865H7AcWa1FAKeAEUKIh/lhqCEpDAu9Ni6OyE2bidy0CV1iIk7NauPp9D+s6raCbt+CeUZ5q+hEFev+vMemU/dJUGlol+qUV/TKKOkVn6Kh4/ITxCSp2evfDG/nV3+xtDExhC78iuidO7EsUQLvqVNwaNYsXz6vgoIxcfjBYUYfG01Dn4Yse3MZVuYFWz+R7YVekh4KIYyvOiyHFIY129T4+sLXbLi2Af86/gyuOTjX8wgheDpjJlHbt+M5ahQen+R+rqKIUKsJX7mK8FWrsCxenL3th7A4xIb3avrw1Ye1sLYwrsJkoVIRPHEisb/uweXjj/CeONF4u72G/QtbOoImGXr+BCX0p8aV3TX7lcKXQoiHQogOQghPIUQxIcT7QOd8sVIhz5g7OuLpP5xyhw7i3vVt4k5e5O4+T4L/LoP6ydN0Y6MTVXz1v39pOu8Plv9xh+aVPDkw8g1WdK+bqWMO4GBtwepe9UhUafl0+0VUGl2WtgghiP3tN+6++x7RP/2EW//+lN3zq+KYKxRaWpVqxdRGUzkVfIqAEwFodVpDm5QVSh6ZQo7ZfnM7G65tyJcmQ+HLlhO1fTtu/frhPjhvcxVFJEtLPEf447VxE+FxybReNZmvk/5iyQc1jM4x18Yn8GjoMGJ/3YPnZyPxnjzZeB1zAM9K0G+/nN6yuQM8OGVoi7LVITQzRgOL89MQhbxhkRJEMdtduPUpRnhSO6J//IWYvb/h2rUrVn36s+nfeDaevE9cioZ3a/gwolUFKnlnr/lF+WKOzOtSE/8dl5j9202mdshYCKQOCiJk+nQSjh3Hplo1/NasxqaqfreHFBSMgU4VOhGTEsNXF77CycqJSQ0nGWNNRdHVzFXIFYceHGLuX3Np4duCgNcD8vR/OnLLVsK/+Qbnzp0pNnaMMX4/TILw+BQGnEvhbrORrIw8SuXff+DR01sUXzDfaPThNeHhPBr8Ccn//ovPrJm4dOliaJOyh1sZ6HdAjqBv7Sw3KipvuOzt3DrnyjfLmIh6ANu6gJU9FgN/wdu5JO6DhxK8fCUR332P5vudJJZpTJsO3RjcoRGVvXPe6Kd9reJcfBjFxpP3qePnQsfaJQBZ6jFy6zbCli4FScIrYAKuPXoY912ygkI+07d6X6JToll/bT0u1i6MqDuiwG2QJGkZmTvhEmAkFVgKpsDFpxcZd3wcNTxrMP+N+Xnq/hmzezdPZ8/GsU1rfKZPUxzzXBIYFk/fjecIjUtmab+mNKv2ATF79/Fk2jTuvd8Jr0kTce7Y0aB/X9X9+zwcNBhNeDglVyzHsUULg9mSK5xLyBH0rZ1gx0fwwUao8p5BTMntN06JwhgLCRFykyFNEvT/HZxLEpOkZsO1ODZYNsG+VXnGPD1Bl2t/Iq06h1tiL7T9+mHunHN1iYB2Vfj7cQzjd/1NFR8nfMMf8mTSZJJv3MChRQu8J08yvDySgoKBGFl3JDGqGNb+vRZna2f6VOtT0Ca8LBlbSdRWyBaB0YH4H/HHx8GH5W8uz1P3z7gjfxAc8CV2DRtSfOFCJIvcO/lFmQsPIhm4+TxmksSOQQ2p4yc3fnJ+713s6tQmaNw4QsZPIOH4cbynTMnV9T2vJF29yqNPZMnmUps3YVvTRJVbHTyh7x5ZxeWH3tBpNdTsWuBmZFkQKklSHFlHYWyFECb/LTP54iJVAmxuD0+vQ+/dxHjWY8OJe2w4eY+4ZA1tq3kzsnUFqvg4kRIYSPjy5cT+th8zR0fc+/fDtVdvzB3sc3TKp7HJdP7qMB/f2E+r639g7u6G95cTcXz7LSUiolDk0eq0jD0+lv89+B/TG0+nU4VOej3fq4qLJEnyFkI80asRBYjJr9lGTn42GUr46y8eDRyEdaVK+G3cmONrjYLM/r9D+Oz7yxR3sWVTvwaUcs/4dxRaLRFr1xG2fDkWnp4Unzu3QDtvxh8/zuORn2Hh7o7v2jVYlykEPUxS4mQd9PsnoP1iqNc3X6bNc0GoEMJRCOGUycMxu465JEltJUn6V5KkO5Ikjc9izIeSJN2QJOm6JEnb07x+QJKkaEmS9r4wXpIkaZYkSbckSbopSdKINK8vTT3XVUmS9Fduawxo1fJdXfAlEjuuZfEtN5rOO8KSw7dpXM6d30Y0Y1WvelTxkVNYrMuWpcSiRZTZ/Qt2r71G2JKl3G3dmoj1G9AlJWX7tPaXzrLmj4W0+vu3EK99AAAgAElEQVQwV2u3pOzevTi1fVtxzBUUAHMzc+Y0m0Mjn0ZMPT2Vww8PG9qk33IyWFmziy7xqniGHRpGdEo0K1qvyJNjnnT9Oo+HDsPS1xffNasVxzyXrD9xj2HbL1KtuBO7hjbO1DEHkMzN8RjyCaV3bMfMyoqHffsS+tUihEqldxujf/qZR0OHYVWmNKV3bC8cjjnIxaE9dkL51rBnJJxeUbDnF0Lo5QGYA3eBsoAVcAWo+sKYCsAlwDX1ebE077UC2gN7XzimH7AFWbf3v2OAdsB+5Mh+Q+Dsq2ysV6+eMEm0WiF2DRZiipM4uHW+qDHlgCg1bq8YvOWcuBYUna0pEq9cEQ8GDBQ3KlUWt5o2ExHbtgltSkqW49WhoeLxqFHiRqXK4k67d8X2dbtFqXF7xdrjd/PrUykoFBoSVAmi+97uos6WOuJs8Fm9nQc4L16+Dl962fsvjFXW7CKKSqMSA38fKGpvri3+fPxnnuZKDgwU/zZqLG61bClUISH5ZGHRQqvViWm/Xv/vup6k0mT/2Ph4ETxxorhRqbII7NxFJN8N1IuNOp1OhK1cJW5Uqiwe9OsvNHHxejmPwVGnCPFdTyGmOAlxdJ4QOl2epnvVmv3s8UopxTzwGnBHCBEohFAB3wEdXxgzCFghhIgCEEKEPntDCHEYiMtk3qHAdCGE7oVjOgJbUj//GcAltRFHoSPl90lw9TuW8REDr1WlYVl39vo3ZXWv+lQrnr1cM9uaNfFbt5ZS27ZiVaoUT2fM5G7btkT/+CNCrf5vnNDpiNq5k7vvvkfcwUN4jPCnzM8/8VH/9rSt5s2c/f9wNjBCXx9VQcEksbO0Y0WrFfg5+uF/xJ/r4dcNZcraHIxV1uwiiE7omHRqEmdCzjCl8ZQ8df9Uh4TwcMAAAPzWr8fS2zu/zCwyJKtl2eINJ+/Rr0lpvulRDxvL7AssmNnb4zNjBiWWLkH9+DH3unQh6ocfnt0o5wtCq+XpjBmELV6MU/v2+K5aWXh3Ryys5MLQWh/DH7Pg4GTIx79lVujTOS8BPErz/HHqa2mpCFSUJOmkJElnJElqm415ywHdJEk6L0nSfkmSKuTgfCZNXLKaPzdPwfrscjZr2nC1zED2+jdlTe/6VC+RuwIQu/r18du6Bb8N67Hw8CRk4iTuvvceMXv2kHL7Ng969+bJpMnYVKpEmd278Rw2DDMrKyRJYkHXmvi52TF8xyVCY5Pz+dMqKJg2LjYurG6zGlcbV4YeGkpgTGCB2yCE+CYHw5U1uwiy5OIS9gXuw7+Of566f2qiong4YCC62Dj81q0tPOkNBUhkgooe685y4PoTJr5bhSntq2FulruUUae33qLMr7uxq1ObJ5On8Hi4P5qoqDzbqEtJIeizUURt34HbgP4UnzcXyapgm68VOOYW0PEbaDAQTi2FfZ+DLuueL/mBPp3zzP5HvXi7YYG8TdoC+BhYJ0nSqyS/rIFkISfUrwU25OB8SJI0OPUicT4sLOwVpzIO4pLVLD9ym9lzp9Ps3mLO2Ten3idrWNunQa6d8rRIkoR948aU/v47Sq78BjNbO4LHjCWwfQdSbt/BZ9ZM/LZsxrps+sXW0caSVT3rEZ+s4dPtF1Fr9fufVUHB1PCy92J1m9VIksTg/w0mJD7E0Ca9DGXNLmLkV5MhbXwCjwYNRh0UhO/Kb5QeF7ngYUQiXVae4u+gGFZ0r8vAZmXzPKellxe+69ZRbNw4Eo4fJ7BDB+JPnMz1fNqYGB4OGEDcoUN4BUzAa8wYpP+3d9/hUZXpG8e/TxppkAQSekIREEVRiqigLoi6WHbVtQuuhSKoILrWnw1XXbtYACkCKrB217X3XlCKCIjCIjWAdAIJ6Xl/f8wEJ6GkzWQmmftzXXNlcubMzJ2TycvDOe85T0Qgy8gQEhEBpz0Cfa6FuVPhv1cHdA96ILdqJuB7RklrYP0+1vmvc67QObcSWIpn4K/odV/z3v8P0NVneUXvh3NusnOup3OuZ1paWqV+kGApLcqPe/Azfvj4Fe5hPNktenPUda9wWHpjv7+fmdGwXz/avf4arR4fS+pVIzjo3XdIPuec/Z7weXDzhjxwzuHMWbWdB9/71e+ZROq6No3aMOnkSeQU5jDso2Fsy9sW7Ej7ozE7jPiryVBJfj6ZV19N3i+/0GrsWOKPOsrPSeu/BWt3cPaEb9i+u4BZQ47mtMP9N7vLIiJocvlltH35JSIbJbF2yBA23n8/Jfn5VXqdwg0bWD1oEHk/LaTVY4/S+O9/91vGOsMMTrob+t0OLY/0fB8ggSzO5wAdzaydmcUAFwJvllvnDaAfgJml4jlkWtGx3zeAE733/wQs895/E/i79woAxwBZzrmQ3k21P9n5RYz/bDnHP/QZj3y4jHObb2R6/FNENT+UxEtfhKgGAX1/i4ig0YABpI0aRVSTJhWuf+aRrbj02DY88/VK3llYJze5SEB1btyZcf3HsSFnA8M/Gk52QXawI+2Lxuww4a8mQ66oiHX/+Ae7v/+elvf/i4Yn9vNz0vrv4yUbuXDyd8Q3iOS1Eb05qq3/d7wBxB5yCO1ee5WUgQPZ9tzzrDrvfPKWLav4iUDesmWsuvAiCjf8TvqUKTQ69dSAZKwTzOBPN8LRVwb0bQJWnDvnioBrgA+AX4CXnXM/m9k/zeyv3tU+ALaa2RLgM+BG59xWADP7CngF6G9mmWb2Z+9zHgDOMbNFwP3AEO/yd/H8I7Ecz6HTqwL1swVKaVF+3IOf8vAHS+mRkcL7l7Tgjqy7iExMg4GvQWztNxeojNtOP5RuGcnc9OpPLN+0r3PCRMJbj2Y9eKzvY/xv+/8Y9dko8ourtucq0DRmhwd/NRlyzrHhzrvI/vgTmv3f/5H0179W/CQpY8bs1QybMZdOzRry+og+HJSWGND3i4iNpfkdt9N64tMUbd3KqnPPY9uMmQc8WXT3nDmsHnQJlJTQZtZMEo45OqAZxWO/TYjCQag0tMjOL+L571Yx5csVbN9dyImdm3Jt/44ckZwHU0+Ggt0w+ENoclCwox7Qhqxcznjya1ISYvjv1X1IaFDn+1SJ+N3bK97m1q9upW96X8b2HVuj1uiVbWhRX4TKmF1X+avJkHOOTQ8+xLZnnyX16qtJG3mNn5PWbyUljoc+WMrEL36jf+emPHVxN+Jjavffy6ItW1h/223kfPElCccfT8t/3UdUuWljOz/4kPU33kh069ZkTJlMdCudr11TNW5CJIGXk1/E05//xvEPfspD7y/lyPRk3ri6D9MuO4oj0gxmngO7t8GgV0O+MAdokRTHUxd1Y8XmbG5+baFfL90kUl+c0f4Mbu11K5+v/Zy7vr2LEqcTqSXw/NlkaOukyWx79llSBg4k9Zqr/Ziy/ssvKmb0SwuY+MVvDDomg0mX9Kj1whwgKjWV9IkTaXbH7ez+4QdWnHkWuz77bM/j22bOYt3o0cR26UKbWTNVmNcy7doMgpz8ImbMXs3kL1ewLaeAvgencW3/jnTLSPGsUJgHL1wMm5fCwJehZbfgBq6C3h1SueHPB/PQ+0vpnpHCFcfpcloi5V18yMVk5Wcx4acJJDVI4saeN6rLrgRMYXEh131+Hb/t+I2n+j9FlyZdqv1a2198cc/1rZvdVv0TScNR1u5Chs2Yy/crt3HzgM4M/1P7oG4/M6PxwIEkHH006264kcwRV5F80YVEJiaydcozJPbvT6tHHyEiNjZoGcOVivNatLugiBnfrWaStyj/U6c0rj2pI91Li3KAkmJ4fSis/hrOmQoHnbj/FwxRw084iPmrd/Cvd3+ha+skegboBBeRumz4EcPZkb+DGUtm0DSuKZcddlmwI0k95Ntk6J4+99SoydDOd9/l97v/SeKf/kTLf90XPpfR84PM7bu5fPocVm3N4YkLj+TMI0NnT3SDDh1o+/JLbB77ONumTwcg+YILaH7H7ViUysRg0FavBaVF+eQvV7A1p4ATOqUxunxRDp5rZr57I/zyJvz5fjj83OAErqGICOPR84/gr+O+5up/z+ftkceT1jCwV5gRqWvMjJt73UxkRCR9WvUJdhypp/zVZCj7q69Zd/MtxPXoTqvHx2LR0X5MWb8tXpfF5c/OIa+wmOevOJpjD6r4Kmi1LSImhmY330Ri374UZmaS9LezdVQkiFScB9DugiJmzl7NpC88RfnxHVMZfVInerRJ2fcTvnzYc3H7PqPh2Lp94YKkOE+DorMnfMPIF+Yzc/DRREVqL4uIrwiL4Kajbgp2DKmnSpsMnd/p/Bo1Gdo9/0cyR42iQYcOpD/9NBFx1bvCSzj6fOkmrp41n6S4aGaN6E2nZg2DHemAEo7uBUf3CnaMsKfiPAByC4o9RfmXv7Elu7Qo70iPNgeY3jF3Onx2HxxxMZw0praiBtQhLRpx31mH849XfuLhD5dy66mHBDuSiEhY8FeTobylS1k7fDhRTdPImDKZyIahXVyGkpfmrOH//rOYg5s1ZPrlR9GskeZuS+WoOPej3IJiZn2/molf/FGUX9u/Y8Vzrn95G965HjqeAn99MqBdp2rbOT1aM3/NdiZ9sYJu6SkMOKx5sCOJiNRr5ZsMRUZEVut1CtasYc2QIUTExZExdRpRqal+Tlo/OecY+9Eynvx0OSd0SmPCwO4k6tLCUgX6tPjBH0X5CrZk53Nch1SuPalj5Tp9rf4WXr0CWnaH856FyPo3j+/OvxzK4vU7ueGVn+jULJH2AW60ICISrvzVZKhw0ybWDB4CBYVkzJpOTOvQOYExlBUUlXDr64t4bX4m5/dszX1nH060pnRKFak4r4G8wmJmfb+GiV/8xuZd+fTp0IQJ/bvTq10lr06y8Wd44UJIaQMDX4GYhMAGDpIGUZFMGNidM578ihEz5/Ofq3sH5bquIiL12abdmxj+8XCiI6J5+qSnSYndz/lNFSjOymLt4CEUbd1Km2en06BDBz8nrZ925RUyYuZ8vl6+hetO6sSo/h10UqVUiyqkaihflPc+qAnjL65CUQ6wY42nyVB0PAx6HeLr9+UGWyXH8cSF3bh0+g/c+voiHr/gSA1aIiJ+4ttkaPqA6dVuMlSyezdrrxxOwapVpE+eRFzXrn5OWj9tyMrl8ulzWL4pm0fOO4Jze7QOdiSpw1ScV9Hz363iqU+Xs3lXPse2b8K4i7pxdPsqXhYpZyvM+BsU7obL34fk6ndqq0tO6JTG9Sd14tGPltGjTQp/P7ZtsCOJSD332a+b+OTXjbRLTaR9agJtUxNonRJXr6YaFBYXMvrz0TVuMuQKCsgcOYrchQtp9fhYEo491s9J66dff9/JZdPmkJ1fxPTLj+L4jmnBjiR1nIrzKlqwdgcd0hJ56qJuHFPVohygIAf+fb5nz/nf34Bmh/o/ZAi7ul8Hfly7g3veXsJhrZL2vta7iIgfrdySw5sL1rMzr2jPsqgII6NxPO28xXq71ATapybQLi2BZg1jiYioO0f1SpsMfb/he+7tc2+1mwy54mLW3XwzOd98Q4t776HRKaf4OWn99M3yLQyfMY/4BpG8fOWxHNqyUbAjST1gzrlgZwianj17urlz51bpOXmFxcRGV+/Md4oL4YWL4LdP4PwZcMgZ1XudOi5rdyFnjPuKwiLHO6OOo0miGhSJVIeZzXPO9Qx2jtpSnTEbPFfP2L67kJVbslmxOYeVW3JYtTWHFZs9X/MKS/asGxsdQdsmCbRP8xTtf9xPJCU+OuSm442dN5Zpi6cxsttIhnUdVq3XcM7x+5i72fHSSzS98QaaDB7s55T10+vzM7np1YUclJbI9MuPomWyrv8uB1bZMVt7zquo2oW5c/DmSFj+EfzlibAtzAGS4qN5emAPznn6W0a9+CPPX3E0kXVoT5WI1C1mRuOEGBonNN6r30RJieP3nXms2pLDii2ewn3llhx+3bCLD3/eSFHJHzuwkuKiaVu6l73cLSEIl8rzV5OhzY8/wY6XXqLJ0KEqzCvBOcf4z5bzyIfL6H1QE54e1IOkuPp3pTUJHhXnteXju+CnF6DfbdDjsmCnCbrDWiVxz1mHcdOrC3n0w6XcNKBzsCOJSBiKiDBaJsfRMjmO3h3KXse7sLiEzO25rNySzcotu71fc/h+xVb+8+O6Mus2bdjAMz0mzbO3vfR+euN4GkRVc6fOAfirydDWadPZOmkSyeefT9r11/k5Zf1TVFzC7W8s5sU5azm7WysePKcrMVH15/wFCQ0qzmvDd+PhmyfgqCFwwo3BThMyzu+ZzvzV25nw+W90y0jh5EObBTuSiMge0ZERe/aMl5dbUMzqbTms3PzHHvdVW3L48OeNbM0p2LNehEGrlLg9J6SWznNvn5pAy+S4ah019FeToR2vvc6mhx6i4YABNL/rzpCbshNqcvKLuPrf8/l86Wau6deBf5zSSdtMAkLFeaAtfAU++D849Ew49aF61f3TH8b8tQs/r9/J9S8v4K1rjqPtPv4RFBEJNXExkXRu3ojOzfc+ATBrdyErt+aUmyqTzfzV28nO/+PE1JjICNo0id/nVJm0hg32Wfj5q8nQzo8+YsMdd5DQuzctH3oQi/T/3v36ZNOuPK54dg6/bNjFv84+nIuPzgh2JKnHVJwH0vJP4I0R0PZ4OHsyVHPvRn0WG+1pUPSXcV8zfOY8/nNVH+JitJ1EpO5Kio/myPhkjkxPLrPcOcfm7HxWek9KXbk1Z8/9L5ZupqD4jxNTE2Iiaec9EbVdk3japSWQ3DCP+34cUeMmQzmzZ7P++n8Qd/jhtH7qSSJiYmr089Z3yzft4tJpc9i+u4Bn/t6Tfp2bBjuS1HMqzgNl3Xx46RJI6wwXzoLo2GAnClnpjeN5/IIjufzZOdz2xiIePe8IHSoUkXrHzGjaMJamDWP36o9RXOJYvyN3zwmpK7173X9au4N3Fq6nxPKIbzOJiOhtRG+6htEz19Iudduey0C29V5ZpqKdG7mLFpF51dXEtG1L+qSJRCToaOWBfL9iK0Ofn0tMVCQvDTuWw1snBTuShAEV54Gw9TeYdR4kNIFBr0Ks/pgr0vfgpow6sSNPfPI/erRJYeDRbYIdSUSk1kRGGOmN40lvHM8Jnco2scnOz+PKj0aweNsmzmh6OyXJnVixOYcvl23m1XmZZdZtmRRLu3InpbZLTaR1Shwlq1aydugwIhs3Jv2ZZ4hMLrtnX8p686f13PDyT6Q3juPZy3uR3jg+2JEkTKg497ddG2HG2YCDQf+Bhs2DnajOuLZ/Rxas3cHdby7hsJZJHJGufzhEJLyVuBLu/WEMC7fO5d4+93JmhzPLPJ6dX8Qqn73tpfPc3/qpbOOlFnnbefTL8cSY48tBt5C2Mpf2u7bQLjWB5o3qVuOlQHPOMfnLFdz/3q/0atuYyX/vQXK8pv5I7VFx7k95WTDzHMjZApe9Bakdgp2oTomIMB6/4EjOeOprRsycx9ujjqdxggZEEQlfT8x/gndWvMPIbiP3KswBEhtEcVirJA5rVfYI7R+Nl3JY81smre96lOjiAp488wa+/a2AvF8X71m3tPGS7wmppZeEbJwQE1bTDItLHHe/9TPPf7ea07u24NHzjqh+fxORalJx7i+FefDiQNj8C1z8MrTqEexEdVJKQgxPD+rOuU9/x7Uv/sizl/dSgyIRCUs1aTJU2ngpqSSflOvuomDXdjKmT2Va9+6UlDg27srznIzqc1Lq0t938dGSso2XGsVG0S7NcxnItk0SaJf2xxz3xCA0Xgqk3IJiRr34Ix8t2ciwE9pzy4DOOqIgQVG//rKCpaQY/jMMVn0Ff5sCHfoHO1Gd1rV1Mnef2YVbX1/EEx8v4/pTDg52JBGRWuWPJkMleXlkjriK/GX/I33CeOK7dwc8RylbJMXRImnvxktFexovlV4GMptVW3bzw8ptezVeSittvFTu+u0ZTQLTeCmQtmTnM/i5uSzM3MHdf+3Cpb3bBjuShDEV5zXlHLx3Myz5L5xyH3Q9P9iJ6oULj/I0KHry0+UcmZHMiZ3VoEhEwoM/mgy5wkLWXXc9u+fNo+UjD5N4wgmVel5UZITnyi+pCfQr91heYTGrfK/f7t3j/vEvG9mSvXfjpbZNfK7fnpZIuyYJtEqpXuOlQFq5JYdLp/3Axp15TBzUgz930bliElwqzmvqy0dgzhToPQp6XxPsNPWGmXHPWYfx8/qdjH5xAe+MOl5nyotIvVfaZKhlYstqNxlyJSWsv+02sj/7jOZ33UnS6af7JVts9AEaL+UWljkxtfT22vx1ezVeymgSX2Z+e+ne9/01Xgqkeau3M+S5OZgZLww7hu4Z1bt2vIg/qTiviXnPwWf3QtcL4aS7g52m3omNjmTioB6c8dRXDJ85j9dG9NaJOSJSb23avYnhHw+vUZMh5xwb73+AnW++Rdq1o0i56KIAJN1bUlw0R6Qn73WVrdLGS6u27Gblluw9e9xXbc3hi2WbKSgq23iprU+xXnpJyPapiSTFR/s98/uLf+faF3+kRVIsz17eSx2qJWSoOK+uX9+Bt0dDh5PhzHEQERHsRPVSRpN4xl5wJIOfm8ud/13MQ+ceEexIIiJ+l12QzVUfX0VWfhbTB0yndcPW1XqdLRMmsH3GDBpfeilNhg/3c8qq82281Ktd4zKP+TZeWrU1hxXeaTILM7N4d9EGfM5LpXFCjGdee5PSa7cn7Pm+Ol2lp3+zkn++vYQj05N55u89aZLYoKY/qojfqDivjtXfwatXQMtucP5zEOn//9HLH/of0oyRJ3bgqU+X0z0jhQt7ZQQ7koiI3xQWFzL689H8tuM3xvUfx6FNDq3W62ybOYstT40j6ayzaHrzTSF/CcQyjZco23ipoKiENdt2e6fHZLPSu+f96+WbeW1+2cZLLZJi95om0y41gfTG8URHlt1xVlLiuO/dX5j69UpOObQZT1zYrVrFvUggqTivqo1L4IULICkdLn4FYnQYrDaMPqkTC9bu4M43f6ZLyyS1UBaReqHElXDHt3fw/YbvubfPvfRp1adar5P11ltsvPdeEvv3p8W992B1/GhuTFQEHZom0qFpIlD2ggA5+UWs2uqd1+7d275yaw5vL9xAVm7hnvUiI4z0lDhvsZ5Iu7QEvl2+hfcW/85lvdtyxxmHhtzJqSKg4rxqnIO3RkFUHFzyOiQ0CXaisBEZYTxxYTfOePIrRsyax9sjj1PHNhGp8ypqMlQZuz7/nPW33Ep8r160euxRLKp+/9Oe0CCKLi2T6NJy750023MKWOHtlFp6UuqKLTnMXrGN3MJiAG4//RAGH9cu5I8sSPiq33/B/mYG5z0LeTshWVMralvjhBgmDOrBeRO/ZfRLC5h26VFqECEidVZNmgyV2j13LuuuHU1s5860njCeiAbhPXc6JSGGHgkx9GhT9mRa5xwbd+ZTVFJC6xRd+UtCW90+7hUMSa2hWfXmA0rNHZmezJ1/6cLnSzfz1KfLgx1HRKRa/NFkKO+XX1g7fATRLVuSPmUykYmJAUhaP5gZzZNiVZhLnaDiXOqcQUdn8LdurXj8k2V8vnRTsOOIiFSJP5oMFaxaxZohQ4lo2JCMaVOJaty44ieJSJ2g4lzqHDPjvrMP5+BmDRn90gLWbtsd7EgiIpXijyZDhb//zporBkNJCRlTpxLdokUAkopIsAS0ODezAWa21MyWm9kt+1nnfDNbYmY/m9m/fZa/b2Y7zOztcus/a2YrzWyB93akd3lfM8vyWX5nIH82Ca64GE+DouJix1Wz5pPnPdFHRKpPY3Zg+aPJUNH27awZMoTirCzSp0yhQft2AUgqIsEUsBNCzSwSGA+cDGQCc8zsTefcEp91OgK3An2cc9vNrKnPSzwMxANX7uPlb3TOvbqP5V85587w2w8hIa1tagKPnn8Ew2bM4+63lnD/3w4PdiSROktjdmD5o8lQcXYOa68cTuGataRPmULcYV0CkFREgi2Qe857AcudcyuccwXAi0D560QNBcY757YDOOf2TCB2zn0C7ApgPqkHTunSnBF9D+KFH9bwyty1wY4jUpdpzA4Q3yZDj/V9rFpNhkoKCsgceQ15P/9Mq7GPkXB0rwAkFZFQEMjivBXgWy1lepf56gR0MrNvzGy2mQ2o5GvfZ2YLzWysmfleN+pYM/vJzN4zs33uUjCzYWY218zmbt68udI/jISuf5zcid4HNeH2Nxbz8/qsYMcRqas0ZgeAb5OhMb3HVKvJkCsqYv0/bmD3d7Npcd+9NOzfPwBJRSRUBLI439d1oVy576OAjkBf4CLgGTNLruB1bwU6A0cBjYGbvcvnA22cc0cATwFv7OvJzrnJzrmezrmeaWlp+1pF6pioyAievKgbKfExjJg5n6zdhRU/SUTK05gdADVtMuScY8OYMez66COa3XoLyWedFYCUIhJKAlmcZwLpPt+3BtbvY53/OucKnXMrgaV4Bv79cs5tcB75wHQ8h2Jxzu10zmV7778LRJtZqn9+FAl1qYkNGD+wOxuycrn+5QWUlJSvKUSkAhqz/cwfTYY2PfIIWa++RpMRw2l86aV+TigioSiQxfkcoKOZtTOzGOBC4M1y67wB9APwDsqdgBUHelEza+H9asBZwGLv9829yzCzXnh+tq1++2kk5PVok8Ltpx/KJ79uYsLnalAkUkUas/2otMlQv/R+1W4ytGXKFLZNnUbKxReRNmpUAFKKSCgK2NVanHNFZnYN8AEQCUxzzv1sZv8E5jrn3vQ+doqZLQGK8ZzRvxXAzL7Ccyg00cwygcHOuQ+AWWaWhucQ7AJguPctzwVGmFkRkAtc6JzT7tMw8/dj2zBv9XYe/WgZR6Qnc3zHuncYXCQYNGb7j2+ToQdPeLBaTYa2v/wymx99jEann06z22+vVnEvInWT1ZOxsFp69uzp5s6dG+wY4me7C4o4a/w3bMku4O2Rx9EyuepNPkTqAjOb55zrGewctaUujNkrdqzgkvcuoRLiOTgAABf4SURBVHFsY54/9flqXct85/vvs+6660k4/jjSx4/HoqMDkFREaltlx2x1CJV6Jz4miomDelBQVMKIWfPJL1KDIhEJPH80Gcr++hvW3XgTcd260fqJJ1SYi4QhFedSL7VPS+SR87ry09od3PP2koqfICJSA75NhiacNKFaTYZyFywgc+RIGrRvT/rEp4mI01E/kXCk4lzqrQGHtWDYCe2ZOXsNr8/PDHYcEamn/NFkKG/ZMtZcOZyotDQynplCZKNGAUgqInWBinOp127688Ec3a4x//efRfyyYWew44hIPeOPJkMFmZmsHTyEiJgYMqZNJaoOXs9dRPxHxbnUa1GRETx1cTcaxUYzYuY8snLVoEhE/Ke0ydCobqOq1WSoaPNm1lwxmJKCAtKnPkNM66pPhxGR+kXFudR7TRvGMn5gdzK353LDKz8RzlcoEhH/8W0yNOTwIVV+fvHOnawZMpSiLVvImDSR2E6dApBSROoaFecSFo5q25hbTzuEj5ZsZOIXB+yZIiJSoZo2GSrJzWXt8BHkr1hB66eeJO7IIwOUVETqGhXnEjau6NOWM7q24OEPfuXb5VuCHUdE6qiaNhlyBQVkXnstuT/+SKuHHyKxT9XnqYtI/aXiXMKGmfHgOV1pn5bIyBd+5PesvGBHEpE6ZsWOFYz8dCQtE1sy7sRxxEVV7XKHrqSE9bf+HzlffkXzu8fQaMCAACUVkbpKxbmElYQGUUwc1J28wmKumjWPgqKSYEcSkTqipk2GnHNsvPdedr7zDmn/uJ6U888PUFIRqctUnEvY6dC0IQ+dewTz1+zgX+/+Euw4IlIH+KPJ0OYnn2T7v1+g8eArSB06NAApRaQ+UHEuYen0ri0YfFw7nv12Ff9dsC7YcUQkhPk2GRrbd2y1mgxte+45tj49kaRzz6HpDTcEIKWI1BcqziVs3XJqZ45qm8Itry1i2cZdwY4jIiGofJOh3q16V/k1drzxBhvvf4CGJ59MizFjqnxlFxEJLyrOJWxFR0Yw/uLuJDSIYviMeezKU4MiESmrpk2Gdn36KRtuu534Y4+h5aOPYFFRAUgpIvWJinMJa00bxTL+4m6s3rabG19ZqAZFIrJHTZsM5Xz/A+tGX0dsly6kjxtHRExMAFKKSH2j4lzC3tHtm3DzgIN5/+ffeearlcGOIyIhoKZNhnIX/0zmVVcRnZFO+qSJRCQkBCipiNQ3Ks5FgKHHt+fUw5rzwPu/8v2KrcGOIyJBVNMmQ/krVrB26FAik5LImDqVqJSqXXJRRMKbinMRPA2KHjq3K22axHP1v39k4041KBIJRzVtMlS4fj1rBg+BiAgypk0lulmzACUVkfpKxbmIV8PYaCYO6kFOfhHX/Hs+hcVqUCQSTmraZKho2zbWDB5Cya5dZDwzhZi2bQMTVETqNRXnIj46NWvIA+cczpxV23ngvV+DHUdEaklNmwwVZ2ezdugwCtevJ33i08QeckiAkopIfadrOomUc+aRrfhxzQ6mfr2SbhnJnNG1ZbAjiUgA+TYZGt9/fJWbDJXk55N51dXkLV1K63FPEd+zZ4CSikg40J5zkX34v9MOoXtGMje9upDlm9SgSKS+qmmTIVdUxLrrrmf3Dz/Q8v5/0bBv38AEFZGwoeJcZB9ioiIYP7A7cdGRXDljHtn5RcGOJCIBUJMmQ66khA2330H2p5/S7PbbSfrLXwKUUkTCiYpzkf1okRTHUxd1Y+WWHG5+TQ2KROqbmjQZcs6x6cGHyHrjDVJHXkPjQQMDlFJEwo2Kc5ED6N0hlRv/3Jl3Fm5g2jergh1HRPykpk2Gtk6axLbnniPlkktIveqqAKUUkXCk4lykAsP/1J5TDm3G/e/+wpxV24IdR0RqqLTJUNe0rtVqMrT9hRfY/PgTNPrrX2h26y1VLuxFRA5ExblIBcyMR84/gtYpcVw9az6bdqlBkUhdVdMmQ1lvv8Pv/7yHxH79aHnffViE/hkVEf/SqCJSCY1io3l6UA925hUy8t8/UqQGRSJ1TvkmQ8mxyVV6fvaXX7L+lluI79GDVmMfw6KjA5RURMKZinORSjqkRSPu/9vhfL9yGw9/sDTYcUSkCmraZGj3/PlkjrqWBp060vrpCUTExgYoqYiEOxXnIlVwdrfWDDomg0lfruD9xRuCHUdEKsG3ydDYvmOr3GQo79dfWXvlcKKbNydjyhQiGzYMUFIRERXnIlV2xxmHckR6Mje8spDfNmcHO46IHEBNmwwVrF7NmiFDiUhIIGPqM0Q1aRKgpCIiHlHBDiBS1zSIiuTpgd05/cmvGPD4l7RIiqNFUiytkuNokRxLy+Q4zy0pjpbJsTSM1bxUkWCZvHBytZsMFW7cxJorBkNRERnPPUt0q1YBSiki8gcV5yLV0DI5jn8PPYY3Fqxjw448NmTl8v3Kbfy+M4/ikrLNiho2iKKlb+Ge5PnaIimOVslxNE+KJSZKB7FEAuG0dqcBVLnJUPGOHawdMpji7dvJeO5ZGhx0UCDiiYjsRcW5SDUd0qIRh7RoVGZZcYlj06481u/IY/2OXNbvyGVDVh7rduSyISuXhZlZbMspKPMcM0hNbFCucC/dE+/Z+56a0ICICF1LWaSqMhplMPyI4VV6TklODmuvHE7BqtWkT5lM3OGHByidiMjeVJyL+FFkhHmnucTRo03KPtfJLShmQ5ZP0V5ayGflsmzjLj5fupncwuIyz4mJjKB5Uiwtk2O902V898Rr+oyIv5QUFJA5chS5ixbR+sknSDjmmGBHEpEwE9Di3MwGAE8AkcAzzrkH9rHO+cAYwAE/Oecu9i5/HzgG+No5d4bP+s8CfwKyvIsuc84tME+LtieA04Dd3uXzA/SjiVRbXEwk7dMSaZ+WuM/HnXNk5Rb+Ubhn5e7ZE1+V6TOtvHvgSwt4TZ+RioT7mO2Ki1l/083kfPstLe67j4YnnRTMOCISpgJWnJtZJDAeOBnIBOaY2ZvOuSU+63QEbgX6OOe2m1lTn5d4GIgHrtzHy9/onHu13LJTgY7e29HA096vInWKmZEcH0NyfAxdWibtc50/ps/4Fu7Vnz5TWtRr+kz4Cvcx2znH72PuZtf779P0pptIPudvwYoiImEukHvOewHLnXMrAMzsReBMYInPOkOB8c657QDOuU2lDzjnPjGzvlV4vzOB551zDphtZslm1sI5p4tRS71TdvrMvtcpnT6zfs/e9z/2xGv6jOxDWI/Zmx8by45XXqHJsGE0ueLyYEQQEQECW5y3Atb6fJ/J3ntFOgGY2Td4DqOOcc69X4nXvs/M7gQ+AW5xzuXv5/1aAWUGejMbBgwDyMjIqPQPI1LXVGX6zHrvFWd858BXNH2mZXIsLTR9pj4J2zF769SpbJ0yheQLLiDtutEBeQ8RkcoKZHG+r2Pjrtz3UXgOafYFWgNfmdlhzrkdB3jdW4HfgRhgMnAz8M9Kvh/Oucne59GzZ8+9HhcJF5WZPlNUXMLm7Pwy02c8J6967v9UyekzZabSaPpMqArLMXvHq6+y6eFHaHTaqTS/8w48U+FFRIInkMV5JpDu831rYP0+1pntnCsEVprZUjwD/5z9vajPIc98M5sO3FCF9xORKoiKjKjR9Jmlmj5Tl4TdmL3zww/ZcOddJBx3HC0feACLjKzNtxcR2adAFudzgI5m1g5YB1wIXFxunTeAi4BnzSwVzyHTFQd60dI5id4z/c8CFnsfehO4xjtP8mggS/PNRQKvMtNnduwu3HPVmUpPn4mN2lOoa/pMrQirMTvn229Z/48biOvaldZPPoHFxNTWW4uIHFDAinPnXJGZXQN8gGdu4jTn3M9m9k9grnPuTe9jp5jZEqAYzxn9WwHM7CugM5BoZpnAYOfcB8AsM0vDc0h0AVDaXeJdPJfkWo7nslw6o0ckBJgZKQkxpCQcePrMpl353sI9jw1VnD7TKjmWFkmaPlMT4TRm5y5cyNprRhLTrh3pkyYSER9fW28tIlIh85woH5569uzp5s6dG+wYIlIJuQXFrM8q27SpzCUkd+RVavpMaeFeuie+Lk+fMbN5zrmewc5RW/wxZucvX87qgYOIaNSINrNmEt20acVPEhHxg8qO2eoQKiJ1QlxMJAelJXJQJafP/FHAe/bEz16xlY278jV9JowVZK5jzRWDISaajGlTVZiLSEhScS4i9UJNps+s886FX7B2B9t3F5Z7XUhLbOAt3DV9pq4q2rKFNYOvoCQvjzYzZhCTnl7xk0REgkDFuYiEjajIiD1TWw509Zn9TZ/59fddfPrrJvIKS8o8p8z0mT1XnKk/02fquuJdu1gzdBhFGzeRMW0asQd3CnYkEZH9UnEuIuKjstNn1nkL9r2mz/xW9ekzHZomkprYoDZ+vLBTkpvL2hEjyF++nPQJE4jv3i3YkUREDkjFuYhIFfhOnzms1YGnz/hecWbDAabP/OPkTozs37G2foSwsnncOHLnzafVo4+QePxxwY4jIlIhFeciIn7mO31mf0qnz6zfkUvrFF3KL1BSR4wgvnt3GvbvH+woIiKVouJcRCQIKpo+I/4RmZiowlxE6hRdH0xEREREJESoOBcRERERCREqzkVEREREQoSKcxERERGREKHiXEREREQkRKg4FxEREREJESrORURERERChIpzEREREZEQoeJcRERERCREqDgXEREREQkR5pwLdoagMbPNwOpg5/CRCmwJdggfoZYHQi9TqOWB0MukPBWrbqY2zrk0f4cJVRqzKyXUMilPxUItU6jlgdDLFNAxO6yL81BjZnOdcz2DnaNUqOWB0MsUankg9DIpT8VCMZNULBR/b6GWSXkqFmqZQi0PhF6mQOfRtBYRERERkRCh4lxEREREJESoOA8tk4MdoJxQywOhlynU8kDoZVKeioViJqlYKP7eQi2T8lQs1DKFWh4IvUwBzaM55yIiIiIiIUJ7zkVEREREQoSKcxERERGREKHivBaY2QAzW2pmy83sln08fr2ZLTGzhWb2iZm18Xms2MwWeG9v1mKmy8xss897D/F57FIz+5/3dmkt5Rnrk2WZme3weczv28jMppnZJjNbvJ/Hzcye9OZdaGbdfR4LxPapKM9Ab46FZvatmR3h89gqM1vk3T5z/ZGn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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb936e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 结果汇总\n",
    "\n",
    "print(\"Best score is %f by using parameters of %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('regalpha_reglambda_1.csv')\n",
    "\n",
    "# 数据转化为矩阵，行对应于reg_alpha，列对应于reg_lambda\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#  画图: reg_lambda与Log Loss的关系的关系\n",
    "fig = plt.figure(figsize=(12,5))\n",
    "plt.subplot(121)\n",
    "for i, value in enumerate(reg_alpha):\n",
    "#    plt.plot(reg_lambda, -train_scores[i], label= 'train-reg_alpha:'   + str(value))\n",
    "    plt.plot(reg_lambda, -test_scores[i], label= 'test-reg_alpha:'   + str(value))    \n",
    "plt.legend()\n",
    "plt.xlabel('reg_lambda')                                                                                                      \n",
    "plt.ylabel('Log Loss')\n",
    "\n",
    "#  画图: reg_alpha与Log Loss的关系\n",
    "plt.subplot(122)\n",
    "for i, value in enumerate(reg_lambda):\n",
    "#    plt.plot(reg_alpha, -train_scores[:,i], label= 'train-reg_lambda:'   + str(value))\n",
    "    plt.plot(reg_alpha, -test_scores[:,i], label= 'test-reg_lambda:'   + str(value))       \n",
    "plt.legend()\n",
    "plt.xlabel( 'reg_alpha' )                                                                                                      \n",
    "plt.ylabel( '-Log Loss' )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：  \n",
    "1) 对正则参数reg_alpha 和reg_lambda进行优化，在reg_alpha=0.1和reg_lambda=2的情况下，得到的最小交叉验证测试误差为：0.6149。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-------------------------------------------------------------------------------------------\n",
    "# 结论： \n",
    "\n",
    "1) 用默认的xgboost对训练数据进行分类，用xgb.featureimportances查看特征重要性，得到在227个特征中，只有71个特征的重要性不为0。大部分的输入特征对分类结果不起作用。  \n",
    "2) 用xgboost内嵌的cv、以及GridSearchCV等方法对训练数据采用交叉验证的方法进行优化分类，用训练集的全部输入特征，或是用训练集的重要性不为0的71个特征进行优化分类，两者得到的最小交叉验证测试误差相差不大。为了减少运行时间，用训练集的重要性不为0的71个特征进行优化分类。  \n",
    "3) 用xgboost内嵌的cv、以及GridSearchCV等方法对训练数据采用交叉验证的方法进行优化分类，得到的最优参数为：n_estimators=122，max_depth=5， min_child_weight=3，subsample=0.8，colsample_bytree=0.6，reg_alpha=0.1，reg_lambda=2；在最优参数下最小交叉验证测试误差为：0.6149。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
